我正在用aiosmtpd构建一个SMTP服务器,并使用这些示例作为构建的基础。下面是程序入口点的代码片段。
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.create_task(amain(loop=loop))
try:
loop.run_forever()
except KeyboardInterrupt:
pass当我运行程序时,我会收到以下警告:
server.py:61: DeprecationWarning: There is no current event loop
loop = asyncio.get_event_loop()实现这一点的正确方法是什么?
发布于 2022-08-15 23:00:22
您的代码将在Python3.10上运行,但从3.11开始,在当前线程中没有运行循环时调用asyncio.get_event_loop将是一个错误。由于您需要循环作为amain的参数,显然,您必须显式地创建和设置它。
使用asyncio.run启动您的主要任务要比使用loop.run_forever更好,除非您有特定的理由这样做。
试试这个:
if __name__ == '__main__':
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
try:
asyncio.run(amain(loop=loop))
except KeyboardInterrupt:
passhttps://stackoverflow.com/questions/73361664
复制相似问题