Twython Неполное чтение HTTP ChunkEncodingError Python 3 - PullRequest
0 голосов
/ 15 ноября 2018

Я написал скрипт на Twython, который использует вызовы Streamer.Он отлично работает под окном Anaconda на моем компьютере с Windows 10.Я тестировал его в течение 3 дней и ночей непрерывно, и он никогда не завершался.

Я просто перенес его на Raspberry Pi 3, где я запустил обновление и обновление, а затем скопировал свой сценарий, используя Putty для подключения к SSH.Raspian OS.Когда я запускаю скрипт под Python3, я получаю следующую ошибку во время выполнения, когда сбой стримера.Обратите внимание, что у streamer есть метод on_error, который должен перехватить ошибку, но он полностью обойден и сценарий завершается.Pi имеет прямое соединение Ethernet с маршрутизатором.

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/response.py", line 186, in 
  read     data = self._fp.read(amt)
  File "/usr/lib/python3.4/http/client.py", line 500, in read
 return super(HTTPResponse, self).read(amt)
  File "/usr/lib/python3.4/http/client.py", line 529, in readinto
  return self._readinto_chunked(b)
  File "/usr/lib/python3.4/http/client.py", line 621, in _readinto_chunked
  n = self._safe_readinto(mvb)
  File "/usr/lib/python3.4/http/client.py", line 680, in _safe_readinto
  raise IncompleteRead(bytes(mvb[0:total_bytes]), len(b))
  http.client.IncompleteRead: IncompleteRead(0 bytes read, 1 more expected)

Это не имеет никакого отношения к моему фактическому коду, я не знаю, как устранить неполадки.

ОБНОВЛЕНИЕ:после 3 дней работы на ПК я просто получил похожую ошибку.Поэтому я поместил стример в цикл Try Except with continue, и я посмотрю, что произойдет.По-видимому, эта проблема существует с Twython в течение длительного времени.Я обновлюсь, если что-нибудь узнаю.

ОБНОВЛЕНИЕ: Я изменил код, основанный на другом посте, чтобы перехватывать ошибки, пропущенные событием Streamer on_error, чтобы выглядеть так:

## try to ignore http errors crashing the system
while True:
    try:
        stream.statuses.filter(follow=users, language = 'en')        

    except:
        e = sys.exc_info()[0]  
        print('ERROR:',e ) 
        continue

Это работало без ошибок в течение ночи на ПК.Не произошло ни одной ошибки.Я перенес код на Raspberry Pi, который безголовый, и который я запускаю с Putty с ПК, и теперь он работает нормально - КРОМЕ, я получаю сообщение об ошибке несколько раз в час.Поток перезапускается и, кажется, работает нормально в противном случае.Не уверен почему.Экран выглядит следующим образом:

Testing 1 2 3 4 5
file updated

Testing again 1 2 3 4
file updated
ERROR: <class 'requests.exceptions.ChunkedEncodingError'>
ERROR: <class 'requests.exceptions.ChunkedEncodingError'>
ERROR: <class 'requests.exceptions.ChunkedEncodingError'>
ERROR: <class 'requests.exceptions.ChunkedEncodingError'>

В документации HTTP Requests говорится об ошибке:

class ChunkedEncodingError(RequestException):
"""The server declared chunked encoding but sent an invalid chunk."""

Итак, я должен предположить, что в Twython есть какая-то внутренняя проблема?Или?

...