2017-04-16 61 views
0

這是我的代碼,試圖初始化一個類的實例,我得到一個Tweep錯誤TweepError:期待長度,突發價值發現大熊貓jupyter筆記本

query = 'vacation' 
max_tweets = 1000 

myStreamListener = MyStreamListener() 
myStream = tweepy.Stream(auth = api.auth, listener = myStreamListener) 
myStream.filter(track=[query]) 

時返回看起來像這樣的錯誤:

TweepError        Traceback (most recent call last) 
<ipython-input-31-227d7853c42e> in <module>() 
     4 myStreamListener = MyStreamListener() 
     5 myStream = tweepy.Stream(auth = api.auth, listener = myStreamListener) 
----> 6 myStream.filter(track=[query]) 

C:\Program Files\Anaconda3\lib\site-packages\tweepy-3.6.0-py3.5.egg\tweepy\streaming.py in filter(self, follow, track, async, locations, stall_warnings, languages, encoding, filter_level) 
    448   self.session.params = {'delimited': 'length'} 
    449   self.host = 'stream.twitter.com' 
--> 450   self._start(async) 
    451 
    452  def sitestream(self, follow, stall_warnings=False, 

C:\Program Files\Anaconda3\lib\site-packages\tweepy-3.6.0-py3.5.egg\tweepy\streaming.py in _start(self, async) 
    362    self._thread.start() 
    363   else: 
--> 364    self._run() 
    365 
    366  def on_closed(self, resp): 

C:\Program Files\Anaconda3\lib\site-packages\tweepy-3.6.0-py3.5.egg\tweepy\streaming.py in _run(self) 
    295    # call a handler first so that the exception can be logged. 
    296    self.listener.on_exception(exc_info[1]) 
--> 297    six.reraise(*exc_info) 
    298 
    299  def _data(self, data): 

C:\Program Files\Anaconda3\lib\site-packages\six.py in reraise(tp, value, tb) 
    684   if value.__traceback__ is not tb: 
    685    raise value.with_traceback(tb) 
--> 686   raise value 
    687 
    688 else: 

C:\Program Files\Anaconda3\lib\site-packages\tweepy-3.6.0-py3.5.egg\tweepy\streaming.py in _run(self) 
    264      self.snooze_time = self.snooze_time_step 
    265      self.listener.on_connect() 
--> 266      self._read_loop(resp) 
    267    except (Timeout, ssl.SSLError) as exc: 
    268     # This is still necessary, as a SSLError can actually be 

C:\Program Files\Anaconda3\lib\site-packages\tweepy-3.6.0-py3.5.egg\tweepy\streaming.py in _read_loop(self, resp) 
    321      break 
    322     else: 
--> 323      raise TweepError('Expecting length, unexpected value found') 
    324 
    325    next_status_obj = buf.read_len(length) 

TweepError: Expecting length, unexpected value found 

我試着對此做一些研究,但是我運氣不好,非常感謝幫助!謝謝!

回答

0

我正在使用tweepy庫的克隆版本(因爲開發團隊尚未將最新版本推送到pip,而以前的版本不時會引發Nonetype錯誤)。我多次遇到同樣的錯誤。該錯誤是在下面的方法:

def _read_loop(self, resp): 
    charset = resp.headers.get('content-type', default='') 
    enc_search = re.search('charset=(?P<enc>\S*)', charset) 
    if enc_search is not None: 
     encoding = enc_search.group('enc') 
    else: 
     encoding = 'utf-8' 

    buf = ReadBuffer(resp.raw, self.chunk_size, encoding=encoding) 

    while self.running and not resp.raw.closed: 
     length = 0 
     while not resp.raw.closed: 
      line = buf.read_line() 
      if not line: 
       self.listener.keep_alive() # keep-alive new lines are expected 
      elif line.strip().isdigit(): 
       length = int(line) 
       break 
      else: 
       raise TweepError('Expecting length, unexpected value found') 

     next_status_obj = buf.read_len(length) 
     if self.running and next_status_obj: 


self._data(next_status_obj) 

我已經取代

raise TweepError('Expecting length, unexpected value found')
self.listener.keep_alive()
到目前爲止它是工作確定,但最終tweepy開發團隊需要解決這個問題。