Python 3.6 和 3.8。
我正在使用以下几行来启动服务器:
class MyServer:
async def main(self, handler, host, port):
self._server = await asyncio.start_server(handler, host=host, port=port)
# Next line does not work with uvloop
self._server._stop = False
该_stop
属性将被添加到处理程序中的访问。
然后在处理程序中,我会_stop
像这样设置属性:
async def handler(reader, writer):
writer._transport._server._stop = True
这在不使用 uvloop 时效果很好。但是当使用 uvloop 时,这不再有效。
当我尝试_stop
在服务器对象上设置(!)属性时,我立即收到此错误:
AttributeError: 'uvloop.loop.Server' object has no attribute '_stop'
我的问题是如何在处理程序和服务器之间“通信”......?
PS。当不使用 uvloop 时,这一切都有效,因为 StreamWriter._transport 有一个属性 _server。