2017-05-14 98 views
1

我有幾個twitterbots,我在我的raspberryPi上運行。我將大部分函數包裝在一個try /中,除非確保某些錯誤不會中斷程序並繼續執行。twitter機器人和Python的tweepy問題

我也使用Python的Streaming庫作爲監視我想要機器人轉發的標記的源。

這裏是發生這種情況/殺死方案雖然我的主要功能包裹在一個不同的問題:

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的對象。這些對象是機器人,它們是在自己的線程中啓動的,因此它們可以獨立運行。

我在運行startFiltering()函數的TwitBot中有一個函數。它被封裝在一個try/except中,但我的except代碼從未被觸發。

我的猜測是錯誤發生在流媒體庫內。也許這個庫編碼很差,並且在回溯底部指定的行上斷開。

任何幫助都會很棒,我想知道其他人是否遇到過這個問題?

如果需要,我可以提供額外的細節。

謝謝!

+1

固定在[github#870](https://github.com/tweepy/tweepy/pull/870)所以更新您的tweepy副本? –

+1

非常感謝!我已經做出了改變,所以它應該都很好!我很欣賞快速反應!和noob我,我不知道我可以修改這些庫... – Discoveringmypath

+0

@gz你想回答這個問題,所以我可以接受它。它似乎在工作。 – Discoveringmypath

回答

3

這實際上是tweepy中的問題,在2017-04年由github #870修復。所以,應該通過更新您的本地副本到最新的主人解決。

我做什麼地發現:

  • 難道網絡搜索找到tweepy源回購。
  • 查看streaming.py瞭解最後一條回溯線上的情況。
  • 注意到文件的最近更改是相同的問題。

我還會注意到,大多數情況下,您從Python庫內部深處獲得回溯,問題來自代碼調用錯誤,而不是庫中的錯誤。但不總是。 :)