我有一些在我的 raspberryPi 上运行的 Twitterbot。我将大多数函数包装在 try/except 中,以确保如果出现错误,它不会破坏程序并继续执行。
我还使用 Python 的 Streaming 库作为我希望机器人转发的标签的监控源。
尽管我将 main 函数封装在 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 中,但我的 except 代码从未被触发。
我的猜测是错误发生在 Streaming 库中。也许该库的编码很差,并且在回溯底部指定的行上中断。
任何帮助都会很棒,我想知道其他人是否遇到过这个问题?
如果需要,我可以提供额外的详细信息。
谢谢!!!
最佳答案
这实际上是 tweepy 中的问题,已由 github #870 修复2017-04。因此,应该通过将本地副本更新到最新的主版本来解决。
我做了什么才发现:
- 通过网络搜索找到了 tweepy 源代码库。
- 查看了
streaming.py
以了解最后回溯行的上下文。 - 注意到最近对文件的更改也出现了同样的问题。
我还要指出,大多数时候,您从 Python 库内部深处获得回溯,问题来自于错误调用它的代码,而不是库中的错误。但不总是。 :)
关于python - Tweepy 与 Twitter 机器人和 Python 相关的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43964862/