Python,异步,单例事件循环

问题描述 投票:0回答:1

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

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

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

app.py

app = FastAPI()
loop = get_event_loop()

views.py

from app import app, loop

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

internal.py

from app import loop

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

还是我应该在每个文件中都get_event_loop()

python asynchronous event-loop
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.