我有很多异步代码,我有问题。
我可能在整个项目中都有一个单例事件循环,还是应该在每个函数,方法,类中使用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()
?
您可以改用asyncio.create_task
。不需要在新版本的Python中传递循环。
该任务在get_running_loop()返回的循环中执行,如果当前线程中没有运行循环,则会引发RuntimeError。
https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task