首页 > 解决方案 > Python,异步,单例事件循环

问题描述

我有很多异步代码,我有一个问题。

我可以在整个项目中使用单例事件循环,还是应该get_event_loop()在每个函数、方法、类中使用?一次性声明并在项目中的任何地方使用它是否存在一些问题?

例如,我有 3 个文件 app.py、views.py、internal.py

应用程序.py

app = FastAPI()
loop = get_event_loop()

视图.py

from app import app, loop

@app.get('/')
async def main(request):
   loop.create_task(<any coroutine>)
   return {'status': 'ok'}

内部.py

from app import loop

async def any_buisiness_logic():
    loop.create_task(<any coroutine>)
    return "task created"

或者我应该get_event_loop()在每个文件中?

标签: pythonasynchronousevent-loop

解决方案


你可以asyncio.create_task改用。循环不需要在较新版本的 Python 中传递。

任务在 get_running_loop() 返回的循环中执行,如果当前线程中没有运行循环,则会引发 RuntimeError。

https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task


推荐阅读