self.running = False
def _read_loop(self, resp):
- while self.running:
- if resp.isclosed():
- break
+ buf = ''
+ while self.running and not resp.isclosed():
+ c = resp.read(self.buffer_size)
+ idx = c.rfind('\n')
+ if idx > -1:
+ # There is an index. Store the tail part for later,
+ # and process the head part as messages. We use idx + 1
+ # as we dont' actually want to store the newline.
+ data = buf + c[:idx]
+ buf = c[idx + 1:]
+ self._data(data)
+ else:
+ # No newline found, so we add this to our accumulated
+ # buffer
+ buf += c
- buf = ''
- while True:
- c = resp.read(self.buffer_size)
- idx = c.rfind('\n')
- if idx > -1:
- # There is an index. Store the tail part for later,
- # and process the head part as messages. We use idx + 1
- # as we dont' actually want to store the newline.
- data = buf + c[:idx]
- buf = c[idx + 1:]
- self._data(data)
- else:
- # No newline found, so we add this to our accumulated
- # buffer
- buf += c
def _start(self, async):
self.running = True