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

如何解决Python币安合约交易中“Event loop is closed”报错?

解决“Event loop is closed”导致币安合约交易程序终止的问题

你的代码核心问题在于嵌套调用asyncio.run(),以及异常处理中错误的循环恢复逻辑:

  1. asyncio.run()会自动创建事件循环,在函数执行完毕后强制关闭循环。当你在main()内部的异常块里再次调用asyncio.run(main())时,外层的asyncio.run()已经关闭了循环,内层调用会直接触发“Event loop is closed”错误。
  2. 事件循环策略(比如Windows的WindowsSelectorEventLoopPolicy)应该在程序启动时设置,而非异常发生后临时修改,否则无法生效。
  3. 异常处理里的两次尝试逻辑无效,第一次调用asyncio.run()已经关闭了循环,第二次调用必然失败。

修正方案

方案1:手动管理事件循环生命周期

放弃asyncio.run()的自动循环管理,改为手动创建、运行循环,避免自动关闭引发的问题:

import asyncio

async def main():
    while True:
        await function_1()
        await function_2()
        await function_3()
        await asyncio.sleep(1)

if __name__ == "__main__":
    # Windows环境提前设置事件循环策略,非Windows环境无需处理
    try:
        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    except AttributeError:
        pass
    
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    try:
        loop.run_until_complete(main())
    except RuntimeError as e:
        if "Event loop is closed" in str(e):
            # 重新创建循环并启动
            loop = asyncio.new_event_loop()
            asyncio.set_event_loop(loop)
            loop.run_until_complete(main())
    finally:
        loop.close()

方案2:优化异常恢复逻辑

如果坚持使用asyncio.run(),将循环启动逻辑抽离到单独函数,避免嵌套调用:

import asyncio

async def main():
    while True:
        await function_1()
        await function_2()
        await function_3()
        await asyncio.sleep(1)

def run_main():
    try:
        asyncio.run(main())
    except RuntimeError as e:
        if "Event loop is closed" in str(e):
            # 重新启动循环入口
            run_main()

if __name__ == "__main__":
    # Windows环境提前设置策略
    try:
        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    except AttributeError:
        pass
    run_main()

额外注意事项

  • 检查function_1/2/3内部是否存在手动关闭事件循环的代码,这是导致循环提前关闭的常见诱因。
  • 给每个异步函数单独添加异常处理,避免单个函数因网络问题、API限制报错时,直接终止整个循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:07:07