Update streaming.py's handle_stream

This is an attempt to resolve an upstream issue with unexpected blank streams. The issue appears to be in urllib3, and causes fatal errors when the stream returned is `b''`. I believe this simple workaround will bypass the error and continue monitoring the stream.
This commit is contained in:
Noëlle Anthony 2018-02-01 20:12:49 -05:00 cometido por GitHub
pare 0cd284bc2f
commit 793f0b207f
No se encontró ninguna clave conocida en la base de datos para esta firma
ID de clave GPG: 4AEE18F83AFDEB23

Veure arxiu

@ -41,26 +41,29 @@ class StreamListener(object):
response; a requests response object with the open stream for reading.
"""
event = {}
line_buffer = bytearray()
for chunk in response.iter_content(chunk_size = 1):
if chunk:
if chunk == b'\n':
try:
line = line_buffer.decode('utf-8')
except UnicodeDecodeError as err:
six.raise_from(
MastodonMalformedEventError("Malformed UTF-8"),
err
)
if line == '':
self._dispatch(event)
event = {}
try:
event = {}
line_buffer = bytearray()
for chunk in response.iter_content(chunk_size = 1):
if chunk:
if chunk == b'\n':
try:
line = line_buffer.decode('utf-8')
except UnicodeDecodeError as err:
six.raise_from(
MastodonMalformedEventError("Malformed UTF-8"),
err
)
if line == '':
self._dispatch(event)
event = {}
else:
event = self._parse_line(line, event)
line_buffer = bytearray()
else:
event = self._parse_line(line, event)
line_buffer = bytearray()
else:
line_buffer.extend(chunk)
line_buffer.extend(chunk)
except:
pass
def _parse_line(self, line, event):
if line.startswith(':'):
@ -136,4 +139,4 @@ class CallbackStreamListener(StreamListener):
def on_notification(self, notification):
if self.notification_handler != None:
self.notification_handler(notification)
self.notification_handler(notification)