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

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

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

from fastapi import FastAPI, BackgroundTasks
import timeapp = 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也给我们提供了很方便的自己的方法,可以 使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4款免费国产开源软件,功能过于强大,常被认为是外国人开发

之前小编分享了一些良心的电脑软件,大部分都是国外的开源软件,就有部分同学在后台说小编有点极端了,国内也是有良心的电脑软件的。 本期就是国产软件专场,今天就给大家推荐几款良心的国产电脑软件,说真的,…

UNIAPP_ReferenceError: TextEncoder is not defined 解决

错误信息 1、安装text-decoding npm install text-decoding2、main.js import { TextEncoder, TextDecoder } from text-decoding global.TextEncoder TextEncoder global.TextDecoder TextDecoder

list模拟实现【C++】

文章目录 全部的实现代码放在了文章末尾准备工作包含头文件定义命名空间类的成员变量为什么节点类是用struct而不是class呢?为什么要写get_head_node? 迭代器迭代器在list类里的实例化和重命名普通迭代器operator->()的作用是什么? const迭代器反向迭…

ENSP防火墙综合配置

综合拓扑: 实验要求: 要求一 生产区的安全策略配置 办公区的安全策略 要求二 生产区的安全策略 游客和办公区的安全策略 因为ISP返回的数据包会被防火墙最后的默认安全策略给拒绝,所以,把要ISP返回的数据给允许通过 要求三 增加…

python如何计算今天是星期几

需要解决的问题:时区问题 解决方案:引入pytz 封装的方法如下: import datetime from .. import pytzweek_list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六&quo…

qt 自定义信号和槽举例

在Qt中,自定义信号和槽是对象间通信的一种强大机制。以下是一个简单的例子,展示了如何定义和使用自定义信号和槽。 首先,我们定义一个简单的Worker类,它有一个自定义信号workCompleted,当某个任务完成时,这…

人工智能及深度学习在病理组学中的应用概述|系列推文·24-07-11

小罗碎碎念 从本期推文开始,小罗将开始进行一项长期的工作——从头开始梳理人工智能在病理组学中的应用。 我会先从机器学习的进展开始讲,随后过渡到深度学习,再进一步阐述数据的处理分析方法,最后介绍人工智能在精准医疗以及病…

不用sleep 来实现延时,用handler 实现延时

如果您希望继续使用Handler来实现延时而不使用sleep,并且想保持代码结构清晰,可以采用链式postDelayed调用来替代之前的多层嵌套。同时,我将展示如何通过创建一个方法来组织这些延时任务,使得代码更加模块化和易于管理。 首先&…

django超市管理系统-计算毕业设计源码50628

摘要 随着零售业的快速发展和数字化趋势的加强,超市作为零售业的重要组成部分,面临着日益增长的竞争压力。为了提高超市的运营效率、降低管理成本并提供更好的客户服务,超市管理系统的引入变得至关重要。基于Python的超市管理系统旨在利用先进…

【MyBatis】——入门基础知识必会内容

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

Unity3D 太空大战射击游戏

一、前言 本案例是初级案例,意在帮助想使用unity的初级开发者能较快的入门,体验unity开发的方便性和简易性能。 本次我们将使用团结引擎进行开发,帮助想体验团结引擎的入门开发者进行较快的环境熟悉。 本游戏案例以太空作战为背景&#xff0c…

kubernetes集群部署:关于CRI(一)

上周接到了一项紧急预研任务:kubernetes各项属性采集。目前我手里已经存在二进制部署的一套kubernetes(v1.23版本CRI:dockershim)集群;为了适配的广泛性,决定使用kuberadm工具部署最新(v1.30版本…

16集 用ESP-DL(ESP32)编译Tensorflow lite语音识别工程-《MCU嵌入式AI开发笔记》

16集 用ESP-DL(ESP32)编译Tensorflow lite语音识别工程-《MCU嵌入式AI开发笔记》 参考文档: ESP-DL 用户指南: https://docs.espressif.com/projects/esp-dl/zh_CN/latest/esp32/index.html 这个ESP-DL 是由乐鑫官方针对乐鑫系列…

SwiftUI @FetchRequest 中 CoreData 托管对象不能正确被刷新的解决

问题现象 在 CoreData 背后加持的 SwiftUI 应用中,我们在视图(View)中往往会采用 @FetchRequest 来查询、排序和过滤我们心仪的托管对象。 不过在上面的示意图中我们发现:虽然 Challenge(挑战)托管对象状态已经变为“失败”,但仍然显示在了最顶部的“正在进行”挑战的 …

概率统计(二)

二维离散型 联合分布律 样本总数为16是因为,两封信分别可以放在4个信箱 边缘分布律 条件分布律 独立性 选填才能用秒杀 联合概率乘积不等于边缘概率的乘积则不独立 二维连续型 区间用一重积分面积用二重积分 离散型随机变量 常见6个分布的期望和方差 离散型随机变…

记录一次mysql死锁问题的分析排查

记录一次死锁问题的分析排查 现象 底层往kafka推送设备上线数据应用层拉取设备上线消息,应用层有多个消费者并发执行将设备上线数据同步数据库表pa_terminal_channel日志报:(Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: …

Linux配置仓库,安装软件

在Linux中安装软件,必须得配置仓库,挂载,才能安装成功 1.选择使用的虚拟机,右键点击“设置” 2.点击“CD/DVD”,勾选“设备状态”中的“已连接”和启动时链接,选择ISO映像文件 3..开启虚拟机 4.配置仓库…

spark中的floor函数

在Spark中,floor函数是一种数学函数,用于返回不大于给定数值的最大整数。具体作用如下: 1. 数值操作: floor函数会将每个元素向下取整到最接近的整数。例如,对于浮点数或双精度数值,它会返回不大于该数值的…

Lumos学习王佩丰Excel第四讲:排序与选择

一、排序 1、简单排序:不要选中一列排序,不然只是局部排序,其他数据都会发生错乱。 2、多条件排序 3、2003版本中超过3个排序条件时如何处理:从最后一个条件到第一个条件倒着按照要求依次排序。 4、按颜色排序 5、自定义排序次序…

妙笔生词智能写歌词软件:开启创作新篇还是形成依赖?

在音乐创作的世界里,科技的发展带来了诸多变革,妙笔生词智能写歌词软件的出现便是其中之一。它的出现引发了热烈的讨论,究竟是为音乐创作开启了全新的篇章,还是让创作者陷入了固有的思维之中? 从积极的方面来看&#…