繁体   English   中英

Python:Tweepy中的WantReadError异常未被捕获

[英]Python: Exception not getting caught in Tweepy for WantReadError

我正在使用Tweepy捕获Twitter流API。 这个问题一样 ,当连接出现问题时 ,我偶尔会出现一系列错误,从

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

其次是其他几个“在处理上述异常期间,发生了另一个异常:”错误。

如上一个问题所暗示,Tweepy的on_error和类似方法未捕获这些错误。 但是,我不清楚如何编写包装程序来尝试捕获此错误。 我最初是从

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: ,它仍然不会捕获此错误。 (我知道最终我想重新启动流,可能会增加退避延迟,但是现在我只是想看看是否可以简单地捕获错误。)

什么是正确的方法来捕捉并保持我的视频流? 显然,这是一个应该永远运行的机器人,因此,我不想不必继续研究它,以确保它在出现网络故障时仍能正常运行。

您看到的错误是在OpenSSL库中定义的,因此您无法正常调用它。 解决此问题所需要做的就是

import OpenSSL

并且应该在程序中开始识别该错误。

您应该已经安装了这个库pip(正在使用的一个库已经取决于它了!),但是如果万一它不是出于某种原因,则可以使用:

pip install pyopenssl

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM