Основной класс, где все запускается унаследовал от VkBotLongPoll (у меня все через этот модуль работает), а в самом классе вначале добавил:
def listen(self):
while True:
try:
for event in self.check():
yield event
except Exception as e:
logging.error(e)
Сегодня ночью снова произошло отключение и бот слег, в логах теперь пустота. Запустил бота локально, отключил интернет, в консоли следующее:
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python37\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "", line 2, in raise_from
File "C:\Python37\lib\site-packages\urllib3\connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "C:\Python37\lib\http\client.py", line 1321, in getresponse
response.begin()
File "C:\Python37\lib\http\client.py", line 296, in begin
version, status, reason = self._read_status()
File "C:\Python37\lib\http\client.py", line 257, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "C:\Python37\lib\socket.py", line 589, in readinto
return self._sock.recv_into(b)
File "C:\Python37\lib\ssl.py", line 1052, in recv_into
return self.read(nbytes, buffer)
File "C:\Python37\lib\ssl.py", line 911, in read
return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python37\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Python37\lib\site-packages\urllib3\connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "C:\Python37\lib\site-packages\urllib3\util\retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "C:\Python37\lib\site-packages\urllib3\packages\six.py", line 686, in reraise
raise value
File "C:\Python37\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
chunked=chunked)
File "C:\Python37\lib\site-packages\urllib3\connectionpool.py", line 386, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "C:\Python37\lib\site-packages\urllib3\connectionpool.py", line 306, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='lp.vk.com', port=443): Read timed out. (read timeout=25)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python37\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "C:\Python37\lib\threading.py", line 865, in run
self._target(*self._args, self._kwargs)
File "D:\Develop\vk_image_bot\main.py", line 78, in input_event
for event in self.long_poll.listen():
File "C:\Python37\lib\site-packages\vk_api\bot_longpoll.py", line 274, in listen
for event in self.check():
File "C:\Python37\lib\site-packages\vk_api\bot_longpoll.py", line 246, in check
timeout=self.wait + 10
File "C:\Python37\lib\site-packages\requests\sessions.py", line 546, in get
return self.request('GET', url, kwargs)
File "C:\Python37\lib\site-packages\requests\sessions.py", line 533, in request
resp = self.send(prep, send_kwargs)
File "C:\Python37\lib\site-packages\requests\sessions.py", line 646, in send
r = adapter.send(request, kwargs)
File "C:\Python37\lib\site-packages\requests\adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='lp.vk.com', port=443): Read timed out. (read timeout=25)
Это не было-бы проблемой, но бот работает у меня потоками, по-этому когда происходит ошибка сам скрипт не отключается, а продолжает "мертво висеть", из-за чего systemd его не перезапускает.
Ночью на VPS происходит что-то странное, 2 дня подряд отключался интернет, в логах было:
Основной класс, где все запускается унаследовал от VkBotLongPoll (у меня все через этот модуль работает), а в самом классе вначале добавил:
Сегодня ночью снова произошло отключение и бот слег, в логах теперь пустота. Запустил бота локально, отключил интернет, в консоли следующее:
Это не было-бы проблемой, но бот работает у меня потоками, по-этому когда происходит ошибка сам скрипт не отключается, а продолжает "мертво висеть", из-за чего systemd его не перезапускает.