python - 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()
在每个文件中?
解决方案
你可以asyncio.create_task
改用。循环不需要在较新版本的 Python 中传递。
任务在 get_running_loop() 返回的循环中执行,如果当前线程中没有运行循环,则会引发 RuntimeError。
https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task
推荐阅读
- php - 使用 PHP 在文件夹中上传图像
- java - RecyclerView 没有出现
- go - 从 os.Args [1] 读取时,golang 文件名太长错误
- mongoose - 继续获取 mongoose.Promise 必须是一个函数,得到了 bluebird
- python - 什么模型(损失函数等)可以在 Keras 中用于使用概率标签而不是 one-hot 编码进行分类训练
- node.js - 如何通过我的 IP 地址和路由器端口转发运行 Node 服务器
- html - 如何让我的页脚不阻止 HTML 中的 div 部分?
- javascript - 在 Javascript if 语句中动态生成多个条件
- javascript - React.js 和 [...](扩展)语法
- react-native - 再次运行 componentDidMount 函数 React Native