Twitter bot和python的Tweepy问题

时间:2017-05-14 14:09:50

标签: python twitter bots tweepy try-except

我在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库中。也许该库的编码很差,并且在回溯底部指定的行上中断。

任何帮助都会很棒,我想知道其他人是否遇到过这个问题?

如果需要,我可以提供额外的细节。

感谢!!!

1 个答案:

答案 0 :(得分:3)

这实际上是在2017-04中由github #870修复的tweepy问题。因此,应通过将本地副本更新为最新的主副本来解决。

我做了什么来发现:

  • 通过网络搜索找到了tweepy源代码库。
  • 查看streaming.py上最后一条追溯线的背景信息。
  • 注意到该文件的最新更改是同样的问题。

我还会注意到,大多数情况下,你从Python库中深入追溯,问题来自于调用它的代码不正确,而不是库中的错误。但不总是。 :)