Python3.10下asyncio.get_event_loop弃用,替换为asyncio.run超时求解
修复方案
你可以使用显式创建、绑定事件循环的写法替换原有代码,既兼容Python 3.10+的规范,也不会破坏CCXT测试的原有生命周期逻辑:
if __name__ == '__main__': # 显式创建新事件循环,替代废弃的自动创建逻辑 loop = asyncio.new_event_loop() # 将新建循环设为当前线程的事件循环 asyncio.set_event_loop(loop) try: loop.run_until_complete(main()) finally: # 测试完成后正常关闭循环 loop.close()
原问题原因说明
- 弃用警告触发原因:Python 3.10开始
asyncio.get_event_loop()在没有当前活跃事件循环时,不再自动创建新循环,只会抛出弃用警告,原有依赖自动创建逻辑的代码都会触发该提示。 asyncio.run()超时原因:asyncio.run()执行完成后会强制销毁当前事件循环及所有未完成的异步资源,而CCXT的异步测试框架存在依赖事件循环存活的后置处理逻辑(比如跨语言测试结果上报、连接池回收),循环被提前销毁导致逻辑卡住,触发node侧调度的超时判定。
内容的提问来源于stack exchange,提问作者Sam Germain
相关产品推荐
相关产品推荐

