作者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://webptt.com/cn.aspx?n=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
1F:推 s06yji3: 印象中requests 预设是没有timeout的。你加了timeout之 06/05 19:45
2F:→ s06yji3: 後的output是期待值还是ERROR message? 06/05 19:45
是期待值没错,看起来就像是收到资料可是一直没断线,
因为一直没断线所以程式就没办法把值传下去,
用了timeout後就断线可以继续走下去,
只是很疑惑,为什麽会发生资料传完却没断线继续执行下去,
(大约等5-10分钟还是会把正确值print出来)
我用其他电脑执行程式倒是没这问题...
※ 编辑: storypp (59.127.163.139 台湾), 06/05/2022 20:45:21
3F:→ lycantrope: 改post试试?虽然telegram api两种都可以 06/06 09:22
我除了get也有用post去试,结果都是要等将近10分钟才会有动作...
※ 编辑: storypp (59.127.163.139 台湾), 06/07/2022 02:22:54
4F:→ blc: dns? 06/07 23:09
似乎不是dns的问题,
我用java写同样的程式在同一台电脑速度是正常的..
有点怀疑是lib版本问题..
同样的code在其他电脑跑是ok的,
不过我不知道怎麽变更python与lib的版本..
能想到的差异只有不同电脑有不同的版本..
正常的执行的电脑是3.8.2
有问题的电脑是3.9.5
5F:→ g919233: 重开机? 06/09 06:43
重开机也没用..
※ 编辑: storypp (59.127.163.139 台湾), 06/11/2022 15:24:21
6F:→ lycantrope: 简单的get,lib能有什麽问题 06/11 15:50
7F:推 OnlyRD: 没怀疑过urllib.parse?既然你其他程式没问题。 06/12 07:19