【发布时间】:2018-04-10 22:17:24
【问题描述】:
嗯,我是 python 异步的新手。我正在使用调用asyncio.start_server 创建服务器,问题是我运行相同的循环两次,第一次创建/启动调用loop.run_until_complete 的服务器,然后是loop.run_forever。这是我使用的代码。
if __name__ == '__main__':
loop = asyncio.get_event_loop()
sv_wrapper = ServerWrapper(
host='localhost',
port=5003
)
loop.run_until_complete(sv_wrapper.create())
print(repr(sv_wrapper.server))
loop.run_forever()
(Full code example)
老实说,我没有收到对loop.run_forever() 的最后一次调用,使用asyncio.start_server 创建的服务器是在执行调用的同一事件循环上运行,还是在内部创建了一个新的事件循环?
如果在内部创建了一个新的事件循环,我不需要调用永远运行,例如只保持进程运行就足够了(当然还有对创建的 Server 的引用)。
我不知道这是否有意义,但如果服务器本身是一个循环(管理传入/传出的连接作为未来的任务)是否可以使用loop.create_task 推送任务?
我没有遇到具体问题,对此感到抱歉。我来自 nodejs 背景,我认为在 python 中实现异步会更容易,感谢您的帮助,任何额外的东西都会受到欢迎!
【问题讨论】:
标签: python python-3.x python-asyncio asyncsocket