Posted on:
Last modified:
我们总会遇到一些比较耗时的任务,如果在一个请求内同步处理,那么用户在前台等待的时间就太长了。
这时候可以使用后台任务,FastAPI 直接内置了后台任务支持——BackgroundTasks
。
from fastapi import BackgroundTasks # 注意这个 s
def send_mail(from_, to, title, content):
"""send email to somebody"""
@app.post("/articles")
def create_article(req: Article, bt: BackgroundTasks):
bt.add_task(send_mail, "me@example.com", "you@example.com", title="hello", content="world")
article = article_dal.create(req)
return article
只要在参数中加上 BackgroundTasks
这个参数,然后调用 add_task 就好了,它的第一参数是要
调用的函数,后面是要传递个这个函数的参数:*args
和 **kwargs
。FastAPI 会在发送响应之后
再去异步运行要执行的操作,而不会阻塞。
最后需要说明的是,FastAPI 中的 BackgroundTasks
世界上实际上直接来自 Starlette,没有任何
不同。
© 2016-2022 Yifei Kong. Powered by ynotes
All contents are under the CC-BY-NC-SA license, if not otherwise specified.
Opinions expressed here are solely my own and do not express the views or opinions of my employer.
友情链接: MySQL 教程站