Я использую Tweepy для захвата потокового API Twitter.Как и в случае этого вопроса , я иногда получаю серию ошибок при возникновении проблемы с соединением, начиная с
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 256, in recv_into
return self.connection.recv_into(*args, **kwargs)
File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 1335, in recv_into
self._raise_ssl_error(self._ssl, result)
File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 1149, in _raise_ssl_error
raise WantReadError()
OpenSSL.SSL.WantReadError
, за которой следует несколько других "Во время обработки вышеуказанного исключения,произошло другое исключение: «ошибки.
». Как подразумевалось в предыдущем вопросе, эти ошибки не обнаруживаются on_error
Tweepy и подобными методами.Тем не менее, я не понимаю, как написать оболочку, чтобы попытаться поймать это.Первоначально я начал свой поток с
twitterStream = tweepy.Stream(auth=auth, listener=myListener)
, где myListener
- мой обычный класс.Я попытался обернуть это в
try:
twitterStream = tweepy.Stream(auth=auth, listener=myListener)
except OpenSSL.SSL.WantReadError as e:
logger.error('WantReadError: %s', e)
, но здесь, в моей IDE, появляется ошибка «неопределенное имя», потому что OpenSSL не является чем-то, что у меня есть прямо в моем коде, и я не уверен, как это сделать.назови это.Но даже если я изменю это на except Exception as e:
, он все равно не поймает эту ошибку.(Я знаю, что в конечном итоге я хочу перезапустить поток, возможно, с увеличением задержки отката, но сейчас я просто пытаюсь выяснить, могу ли я просто перехватить ошибку.)
Какой правильный способ перехватитьэто, и поддерживать мой поток?Очевидно, что это бот, который должен работать вечно, поэтому мне не нужно постоянно смотреть на него, чтобы убедиться, что он все еще работает, если есть сбой в сети.