我在raspberryPi上运行了一些twitterbot。我将大多数函数包装在try / except中,以确保如果出现错误,它不会破坏程序并继续执行。
我也使用Python的Streaming库作为我希望机器人转发的标签监控源。
这是一个会导致程序崩溃的问题,尽管我将主函数包含在try / except中:
Unhandled exception in thread started by <function startBot5 at 0x762fbed0>
Traceback (most recent call last):
File "TwitButter.py", line 151, in startBot5
'<botnamehere>'
File "/home/pi/twitter/bots/TwitBot.py", line 49, in __init__
self.startFiltering(trackList)
File "/home/pi/twitter/bots/TwitBot.py", line 54, in startFiltering
self.myStream.filter(track=tList)
File "/usr/local/lib/python3.4/dist-packages/tweepy/streaming.py", line 445, in filter
self._start(async)
File "/usr/local/lib/python3.4/dist-packages/tweepy/streaming.py", line 361, in _start
self._run()
File "/usr/local/lib/python3.4/dist-packages/tweepy/streaming.py", line 294, in _run
raise exception
File "/usr/local/lib/python3.4/dist-packages/tweepy/streaming.py", line 263, in _run
self._read_loop(resp)
File "/usr/local/lib/python3.4/dist-packages/tweepy/streaming.py", line 313, in _read_loop
line = buf.read_line().strip()
AttributeError: 'NoneType' object has no attribute 'strip'
我的设置: 我有一个父类TwitButter.py,它从TwitBot.py创建一个对象。这些对象是机器人,它们在自己的线程上启动,因此它们可以独立运行。
我在TwitBot中有一个运行startFiltering()函数的函数。它包含在try / except中,但我的除外代码永远不会被触发。
我的猜测是错误发生在Streaming库中。也许该库的编码很差,并且在回溯底部指定的行上中断。
任何帮助都会很棒,我想知道其他人是否遇到过这个问题?
如果需要,我可以提供额外的细节。
感谢!!!
答案 0 :(得分:3)
这实际上是在2017-04中由github #870修复的tweepy问题。因此,应通过将本地副本更新为最新的主副本来解决。
我做了什么来发现:
streaming.py
上最后一条追溯线的背景信息。我还会注意到,大多数情况下,你从Python库中深入追溯,问题来自于调用它的代码不正确,而不是库中的错误。但不总是。 :)