Игнорирование ошибки таймаута python vk api?
Если бот на питоне работает достаточно долго, то его выкидывает с ошибкой vk-api как
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='im.vk.com', port=443): Read timed out. (read timeout=35)
Фулл ошибки:
File "Textv2.py", line 117, in
for event in longpoll.listen():
File "/home/h4x4d/.local/lib/python3.8/site-packages/vk_api/longpoll.py", line 621, in listen
for event in self.check():
File "/home/h4x4d/.local/lib/python3.8/site-packages/vk_api/longpoll.py", line 557, in check
response = self.session.get(
File "/usr/lib/python3.8/site-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/usr/lib/python3.8/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.8/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.8/site-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='im.vk.com', port=443): Read timed out. (read timeout=35)
Можно как-то ее игнорировать и продолжить выполнение, хотя бы через цикл? Мне не нравится что бот падает каждые 6 часов из-за этого. Заранее спасибо!
P.S. Пробовал постоянно отправлять ему сообщения, дабы "обновить таймаут", не помогает, он все равно упал
Ответы (3 шт):
Можно использовать цикл while, в котором будет обработка этой ошибки
while True:
try:
your code...
except ReadTimeOut:
print("Переподключение")
sleep(60)
Так же вы можете попробовать мою библиотеку https://github.com/lxstvayne/vk_maria. Под капотом есть обработка этой ошибки, а так же вы можете найти в ней некоторые удобства. Подробнее в документации.
while True:
try:
your code...
except Exception:
pass
Рекомендую это написать, выше описанный метод мне не помогал. Команда pass позволяет пропустить ошибки и продолжить использование кода. Сам использую на pythonanywhere, но код все равно будет вырубаться, но намного реже.
Зная api vk дело скорее всего не в боте, а в их ограничениях-лимитах... если время падения стабильно равно 6 часам, то предлагаю автоматический перезапуск бота типа
os.system(__file__)
exit()