Недавно я создал Telegram-бота, который поначалу работает нормально. Затем, через некоторое время (скажем, несколько часов), бот начинает выдавать следующее исключение, которое я действительно не понимаю:
Error while getting Updates: urllib3 HTTPError SOCKSHTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot1924749319:<mytoken>/getUpdates (Caused by ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.contrib.socks.SOCKSHTTPSConnection object at 0x116208c90> 'Connection to api.telegram.org timed out. (connect timeout=5.0)'))
No error handlers are registered, logging exception.
Traceback (most recent call last):
File "/Library/anaconda3/lib/python3.7/site-packages/socks.py", line 809, in connect
negotiate(self, dest_addr, dest_port)
File "/Library/anaconda3/lib/python3.7/site-packages/socks.py", line 444, in _negotiate_SOCKS5
self, CONNECT, dest_addr)
File "/Library/anaconda3/lib/python3.7/site-packages/socks.py", line 524, in _SOCKS5_request
resp = self._readall(reader, 3)
File "/Library/anaconda3/lib/python3.7/site-packages/socks.py", line 276, in _readall
d = file.read(count - len(data))
File "/Library/anaconda3/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Мой код :
def papa_BT_scan(context: telegram.ext.CallbackContext):
ws_nonFG_bot_web_scraping.papa_bt_scan(context)
#Server Start
#===========================================================
def server_start(update: telegram.Update, context: telegram.ext.CallbackContext):
print("Telegram_bot_nonFG Started.")
context.bot.send_message(chat_id=update.message.chat_id,text=':)')
context.job_queue.run_daily(papa_BT_scan,datetime.time(hour=18, minute=00, tzinfo=pytz.timezone('Asia/Hong_Kong')),context=update.message.chat_id)
if __name__ == "__main__":
REQUEST_KWARGS = {'proxy_url': 'socks5h://127.0.0.1:9150' }
u = Updater('<myToken>', use_context=True,request_kwargs=REQUEST_KWARGS)
start_handler = CommandHandler('s', server_start,pass_job_queue=True)
u.dispatcher.add_handler(start_handler)
u.job_queue.start()
u.start_polling()
u.idle()
Я искал в Интернете, большинство людей советуют использовать Proxy / VPN (ExpressVPN), которые я пробовал, но все равно бесполезно.
При включении трассировки, пожалуйста, включите полную трассировку, а не усекайте ее;)
Отвечает ли это на ваш вопрос? TimedOut в python-telegram-bot, но сообщение отправлено
так что я должен поставить «connect_timeout» на большее значение (скажем, «10») в REQUEST_KWARGS в средстве обновления, чтобы решить эту проблему?
Поскольку мое сообщение об ошибке говорит о том, что мой бот достиг максимума. количество попыток соединения, да?
Вы не «должны», но это один из способов избежать этого. Не то чтобы, если бы это происходило только время от времени, я бы просто не стал этим заморачиваться…
это борьба со мной большую часть времени, и это происходит каждый раз, когда я запускаю бота! Что, если я замедляю работу своего бота? (Например, используйте time.sleep(2) для замедления сетевого запроса GET?
Кто-нибудь знает, сколько запросов можно отправить в телеграмме в минуту? Поскольку мой бот будет запрашивать около 40-50 раз (driver.get(url) через Selenium) в функциях «papa_bt_scan», не уверен, что это связано.
Кто-нибудь может помочь??