You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用aiosmtpd搭建SMTP服务器遇asyncio.get_event_loop()弃用警告,求正确实现

解决asyncio.get_event_loop()的弃用警告问题

这个警告是因为Python 3.10及以后版本中,asyncio.get_event_loop()在没有默认事件循环的线程中调用时,不再自动创建新循环,触发了弃用提示。以下是两种正确的实现方式:

方式一:使用asyncio.run()(推荐)

这是现代asyncio推荐的启动方式,它会自动创建、运行并关闭事件循环,代码更简洁:

import asyncio

if __name__ == '__main__':
    asyncio.run(amain())

如果你的amain函数原本需要接收loop参数,建议修改函数内部通过asyncio.get_running_loop()获取当前活跃的事件循环,无需手动传递:

async def amain():
    loop = asyncio.get_running_loop()
    # 后续SMTP服务器初始化逻辑

方式二:显式创建并管理事件循环

如果需要更精细地控制事件循环的生命周期(比如自定义关闭逻辑),可以显式创建新循环:

import asyncio

if __name__ == '__main__':
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    try:
        loop.create_task(amain(loop=loop))
        loop.run_forever()
    except KeyboardInterrupt:
        pass
    finally:
        loop.close()

内容的提问来源于stack exchange,提问作者howley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:18:16