FastAPI 学习之路(四十)后台任务

 我们在实际的开发中,都会遇到,我们要执行的一些任务很耗时,但是对于前端,没必要进行等待。比如发送邮件,读取文件。我们在fastapi如何实现呢。

       其实很简单,fastapi已经给我们封装好一个现成的模块,我们直接调用使用即可,非常方便。我们举一个简单例子演示下

from fastapi import FastAPI, BackgroundTasks
import time

app = FastAPI(docs_url="/api/docs", redoc_url="/redoc")


def write_big_text(email: str, msg: str = ""):
    time.sleep(200)
    with open("big_text.txt", mode="w") as email_file:
        content = f"name {email}: {msg}"
        email_file.write(content)


@app.post("/send_email")
async def send_email(email: str, background_task: BackgroundTasks):
    background_task.add_task(write_big_text, email, msg="啥都行")
    return {"message": "the task is running background"}

使用postman测试接口

我们的接口处理完成,但是后台任务还需要等待200s后才能执行完毕。所以我们不必等着任务全部执行完毕再返回,针对特别耗时的任务必须放在后台执行,不能占用前端的进程,不然会影响用户体验和接口返回的。

当然,执行这种耗时任务还有很多插件可以使用,但fastapi也给我们提供了很方便的自己的方法,可以 使用

相关推荐

  1. FastAPI 学习(五)startup 和 shutdown

    2024-07-12 15:06:03       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 15:06:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 15:06:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 15:06:03       58 阅读
  4. Python语言-面向对象

    2024-07-12 15:06:03       69 阅读

热门阅读

  1. python-torch加载c++与内核函数

    2024-07-12 15:06:03       16 阅读
  2. 如何将canvas画布变成一张img图片

    2024-07-12 15:06:03       20 阅读
  3. 力扣第230题“二叉搜索树中第K小的元素”

    2024-07-12 15:06:03       22 阅读
  4. Gradio聚类

    2024-07-12 15:06:03       16 阅读
  5. Node.js 模块系统

    2024-07-12 15:06:03       17 阅读
  6. 模板方法模式的实现

    2024-07-12 15:06:03       20 阅读
  7. Android.mk中LOCAL_SDK_VERSION的作用是什么?

    2024-07-12 15:06:03       20 阅读
  8. C++:右值引用

    2024-07-12 15:06:03       22 阅读