Python 3.x Tornado读取直到关闭方法错误
我正试图用一个tornado在python中创建TCP服务器。 我的句柄流方法如下所示Python 3.x Tornado读取直到关闭方法错误,python-3.x,tornado,tcpserver,Python 3.x,Tornado,Tcpserver,我正试图用一个tornado在python中创建TCP服务器。 我的句柄流方法如下所示 async def handle_stream(self, stream, address): while True: try: stream.read_until_close(streaming_callback=self._on_read) except StreamClosedError: break 在\u on
async def handle_stream(self, stream, address):
while True:
try:
stream.read_until_close(streaming_callback=self._on_read)
except StreamClosedError:
break
在\u on_read
方法中,我试图读取和处理数据,但每当新客户机连接到服务器时,它就会发出断言错误:已在读取
错误
File "/.local/lib/python3.5/site-packages/tornado/iostream.py", line 525, in read_until_close
future = self._set_read_callback(callback)
File "/.local/lib/python3.5/site-packages/tornado/iostream.py", line 860, in _set_read_callback
assert self._read_future is None, "Already reading"
异步读取套接字中的所有数据,直到其关闭<代码>读取直到关闭必须调用一次,但循环会强制进行第二次调用,这就是您出错的原因:
- 在第一次迭代中,
设置read_直到_close
,并返回streaming_回调
,以便您可以等待它或稍后使用李>Future
- 在第二次迭代中,
引发异常,因为您已经在第一次迭代中设置了回调read\u till\u close
read\u直到关闭
返回Future
对象,您可以等待
它使事情正常进行:
async def handle_stream(self, stream, address):
try:
await stream.read_until_close(streaming_callback=self._on_read)
except StreamClosedError:
# do something