首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asyncio.get_event_loop():DeprecationWarning:没有当前事件循环

asyncio.get_event_loop():DeprecationWarning:没有当前事件循环
EN

Stack Overflow用户
提问于 2022-08-15 13:25:45
回答 1查看 7.5K关注 0票数 9

我正在用aiosmtpd构建一个SMTP服务器,并使用这些示例作为构建的基础。下面是程序入口点的代码片段。

代码语言:javascript
复制
if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.create_task(amain(loop=loop))
    try:
        loop.run_forever()
    except KeyboardInterrupt:
        pass

当我运行程序时,我会收到以下警告:

代码语言:javascript
复制
server.py:61: DeprecationWarning: There is no current event loop
  loop = asyncio.get_event_loop()

实现这一点的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-15 23:00:22

您的代码将在Python3.10上运行,但从3.11开始,在当前线程中没有运行循环时调用asyncio.get_event_loop将是一个错误。由于您需要循环作为amain的参数,显然,您必须显式地创建和设置它。

使用asyncio.run启动您的主要任务要比使用loop.run_forever更好,除非您有特定的理由这样做。

试试这个:

代码语言:javascript
复制
if __name__ == '__main__':
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    try:
        asyncio.run(amain(loop=loop))
    except KeyboardInterrupt:
        pass
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73361664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档