前面写着关于aiojobs的和FastAPI框架使用的时候搞错了,示例给的是使用了pyee去了!!!!非常抱歉,以下是结合aiojobs的和FastAPI框架实现类似Background Tasks的效果纠正示例代码:
import aiojobs
from fastapi import FastAPI, Request
import asyncio
import time
from pyee import AsyncIOEventEmitter
from KKKK import contextIOOI
app = FastAPI()
async def coro(timeout):
"""
异步函数:等待一段时间
参数:
- timeout (float): 等待的时长
返回值:
无
"""
await asyncio.sleep(timeout)
print("输出!!!")
@app.get("/")
async def async_endpoint(request: Request):
# 创建调度器Scheduler
scheduler = aiojobs.Scheduler()
for i in range(100):
# 生成任务
await scheduler.spawn(coro(5))
return {"message": "ok"}
@app.get("/1")
async def async_endpoint(request: Request):
# 创建事件发射器实例
return contextIOOI.get_local('key2') # 输出: 'value2'
# 运行 FastAPI 应用程序
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8200)
运行代码后,你会发现,我们接口可以很快的相应返回,但是我们此时也在后台并发的执行了100多个任务!!!!这种方式也可以得到类似的后台任务执行的操作。
文笔有限,如有笔误或错误!欢迎批评指正!感谢各位大佬!有什么问题也可以随时交流!
END
简书:https://www.jianshu.com/u/d6960089b087
掘金:https://juejin.cn/user/2963939079225608
公众号:微信搜【程序员小钟同学】
新开QQ群号,欢迎随时加群交流,相互学习。QQ群号:247491107
小钟同学 | 文 【欢迎一起学习交流】| QQ:308711822
原文作者:程序员小钟同学;如有侵权,请联系管理员删除。