python-3.x 发送BackgroundTask脱离控制器

5us2dqdw  于 2023-05-19  发布在  Python
关注(0)|答案(1)|浏览(210)

文档解释了如何从控制器发送后台任务,如

@app.get("/mypath")
async def send_notification(email: str, background_tasks: BackgroundTasks): 
    pass

我想知道是否有一种方法可以在控制器作用域之外发出一个后台任务(我的意思是,不需要从控制器传递BackgroundTasks对象到我所有的函数调用)
我试过了,但是没有用

from fastapi import BackgroundTasks
def print_key(key: str):
    print(f"test bg task: {key}")

def send_stats(key: str):
    BackgroundTasks().add_task(print_key, key)
a5g8bdjr

a5g8bdjr1#

尝试在应用程序级别创建BackgroundTasks类的示例,然后在函数中使用它。

from fastapi import BackgroundTasks, FastAPI

app = FastAPI()
background_tasks = BackgroundTasks()

def print_key(key: str):
    print(f"test bg task: {key}")

def send_stats(key: str):
    background_tasks.add_task(print_key, key)

@app.get("/mypath")
async def my_path(email: str):
    send_stats("some_key")
    return {"message": "Task added to background tasks"}

相关问题