python273 / vk_api

Модуль для создания скриптов для ВКонтакте | vk.com API wrapper
https://pypi.org/project/vk-api/
Apache License 2.0
1.33k stars 321 forks source link

HTTPSConnectionPool(host='lp.vk.com', port=443): Read timed out. #243

Closed ghost closed 3 years ago

ghost commented 5 years ago

Ночью на VPS происходит что-то странное, 2 дня подряд отключался интернет, в логах было:

2019-05-05 00:55:06,570:DEBUG:HTTPSConnectionPool(host='lp.vk.com', port=443): Read timed out. (read timeout=35)

Основной класс, где все запускается унаследовал от 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 его не перезапускает.

prostomarkeloff commented 5 years ago

Интернет не отключается у тебя на VPS, сервера ВК в это время (обычно 2 часа ночи) перезагружаются, в том числе и lp.vk.com.

mlneko commented 3 years ago

ReadTimeout обрывает тебе сессию с вк, просто при ошибке релогин выполняй