作者storypp (隨風而逝的是一份真)
看板Python
標題[問題] telegram反應非常慢...
時間Sun Jun 5 14:27:28 2022
我寫的程式如下
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