看板 Python 關於我們 聯絡資訊
我寫的程式如下 import requests import urllib.parse def sendMessage( botID, chatID, message): str="https://api.telegram.org/bot"+botID\ +"/sendMessage?chat_id="+chatID+"&text="\ +urllib.parse.quote_plus(message) response= requests.get(str) try: js=response.json() except: js=dict() js["error"]=response.text return js meID="123456" botID="oooo:xxxx" js=sendMessage(botID,meID,"test") print(js) 程式可以發訊,可是反應非常慢 大概要5-10分鐘才會發出訊息 記得以前沒這問題,不曉得是有什麼地方需要改良嗎? 自問自答 發現是網路的問題,不過不確定發生原因, 在遠端主機測試正常 自己的電腦得把requests加上timeout也可以運作, response= requests.get(str, timeout=1) 這樣就可以正確跑了, 不過這樣一來反應就變慢了, 不知道有人可以抓出原因嗎? 同樣的程式,去抓其他網址都沒問題, 只有telegram的api才會有這問題.... -- sent from my IBM 5100 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.163.139 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1654410452.A.E63.html ※ 編輯: storypp (59.127.163.139 臺灣), 06/05/2022 15:54:19 ※ 編輯: storypp (59.127.163.139 臺灣), 06/05/2022 15:55:05
s06yji3: 印象中requests 預設是沒有timeout的。你加了timeout之 06/05 19:45
s06yji3: 後的output是期待值還是ERROR message? 06/05 19:45
是期待值沒錯,看起來就像是收到資料可是一直沒斷線, 因為一直沒斷線所以程式就沒辦法把值傳下去, 用了timeout後就斷線可以繼續走下去, 只是很疑惑,為什麼會發生資料傳完卻沒斷線繼續執行下去, (大約等5-10分鐘還是會把正確值print出來) 我用其他電腦執行程式倒是沒這問題... ※ 編輯: storypp (59.127.163.139 臺灣), 06/05/2022 20:45:21
lycantrope: 改post試試?雖然telegram api兩種都可以 06/06 09:22
我除了get也有用post去試,結果都是要等將近10分鐘才會有動作... ※ 編輯: storypp (59.127.163.139 臺灣), 06/07/2022 02:22:54
blc: dns? 06/07 23:09
似乎不是dns的問題, 我用java寫同樣的程式在同一台電腦速度是正常的.. 有點懷疑是lib版本問題.. 同樣的code在其他電腦跑是ok的, 不過我不知道怎麼變更python與lib的版本.. 能想到的差異只有不同電腦有不同的版本.. 正常的執行的電腦是3.8.2 有問題的電腦是3.9.5
g919233: 重開機? 06/09 06:43
重開機也沒用.. ※ 編輯: storypp (59.127.163.139 臺灣), 06/11/2022 15:24:21
lycantrope: 簡單的get,lib能有什麼問題 06/11 15:50
OnlyRD: 沒懷疑過urllib.parse?既然你其他程式沒問題。 06/12 07:19