Fastapi之BackgroundTasks

如何在 FastAPI 中使用 BackgroundTasks异步执行后台任务 

import asyncio
import logging
import timefrom fastapi import FastAPI, BackgroundTasks# 配置日志记录级别
logging.basicConfig(level=logging.INFO)# 初始化FastAPI应用
app = FastAPI(routes=None)# 初始化任务状态字典
task_status = {}def send_mail(n, task_id):"""模拟发送邮件的任务函数。参数:- n: 邮件发送预计耗时的秒数。- task_id: 任务的唯一标识符。"""logging.info(f"开始发送邮件,预计耗时 {n} 秒,任务ID: {task_id}")time.sleep(n)  # 模拟邮件发送耗时logging.info(f"邮件发送完成,耗时 {n} 秒,任务ID: {task_id}")task_status[task_id] = "completed"  # 更新任务状态为完成@app.api_route(path="/index", methods=["GET", "POST"])
async def index(tasks: BackgroundTasks):"""主要的API路由处理函数。参数:- tasks: 用于在后台执行任务的任务管理器。返回:- 一个包含任务ID的字典。"""task_id = str(int(time.time() * 1000))  # 生成一个唯一的任务IDtask_status[task_id] = "running"  # 更新任务状态为运行中tasks.add_task(send_mail, 10, task_id)  # 将邮件发送任务添加到后台任务中print(id(asyncio.get_event_loop()))  # 打印当前事件循环的IDreturn {"index": "index", "task_id": task_id}@app.get("/status/{task_id}")
async def get_task_status(task_id: str):"""获取任务状态的API路由处理函数。参数:- task_id: 任务的唯一标识符。返回:- 一个包含任务ID和状态的字典。"""status = task_status.get(task_id, "not found")  # 获取任务状态,如果不存在则返回"not found"return {"task_id": task_id, "status": status}if __name__ == "__main__":import uvicornimport os# 获取应用模型名称,用于uvicorn运行app_model_name = os.path.basename(__file__).replace(".py", "")print(app_model_name)# 使用uvicorn运行FastAPI应用uvicorn.run(f"{app_model_name}:app", host='0.0.0.0', reload=True)

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

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

相关文章

Go_Parser部署、使用与原理分析

文章目录 前言1、概述2、安装与使用2.1、源码安装2.1.1、部署系统依赖组件2.1.1.1、部署IDA Pro 7.5 SP32.1.1.2、部署Python 3.9.132.1.1.3、部署Go 1.13.1 2.1.2、使用源码安装系统 2.2、使用方法2.2.1、准备测试程序2.2.2、创建IDA Pro项目2.2.3、使用Go_Parser解析二进制程…

植物大战僵尸杂交版游戏分享

植物大战僵尸杂交版游戏下载:夸克网盘分享 无捆绑之类的隐形消费,下载即玩

电力调度控制中心在电力系统中的作用

在庞大而复杂的电力系统中,电力调度控制中心犹如一颗智慧的心脏,扮演着不可或缺的角色。它不仅是电力输送与分配的指挥官,更是确保电网安全、稳定、高效运行的守护者。关于电力调度控制中心在电力系统中的作用,我们具体了解一下。…

URL+Tcp/IP+Http Https

URL 1,在WWW上,每一个信息资源都有统一的且在网上唯一的地址,该地址就叫URL,(统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址,用于定位网络资源,例如:视频,音…

全新子比主题7.9.2开心版 子比主题最新版源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 wordpress zibll子比主题7.9.2开心版 修复评论弹授权 可做付费下载站 含wordpress搭建视频教程zibll子比主题安装视频教程支付配置视频教程,视频都是语音讲解,…

AI产品经理:从入门到精通,一篇文章带你入门!(附学习资料)

一、AI产品经理工作全流程概览 AI产品经理工作全流程中与普通产品经理的区别主要是多了算法模型部分,包括模型预研、数据准备、模型构建、模型宣讲、模型验收,协作的对象相对普通产品经理也多了算法工程师。 二、需求定义 需求定义主要要定义清楚以下几…

Ubuntu系衍生版手动修改配置网卡的配置总结

一、Ubuntu系的IP地址配置文件的目录: sudo vim /etc/network/interfaces 二、以DHCP方式配置网卡: 在以上配置文件中添加以下两行: auto enp3s0 iface enp3s0 inet dhcp 三、为网卡配置静态IP地址: 在以上配置文件中添…

vue $nextTick 实现原理

nextTick的实现 一:nextTick介绍二:手写nextTick三:具体代码四:实现细节 一:nextTick介绍 nextTick 是 Vue.js 框架中的一个方法,它允许延迟执行一个函数,直到 DOM 更新完成。当你修改了数据并…

python-qq定时自动消息发送

预设 qq需要可以enter发送消息 发qq表情代码需要开启快捷表情 import sys import win32gui import win32con import win32clipboard as w import win32api import time import subprocess import datetime import webbrowser import tkinter as tk vb_file_path "./op…

探索迷宫的奥秘:用 C++ 打造你的迷宫游戏之旅!

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

面试官:重量级锁的8连问,你能接住几个?

前言 接上一篇偏向锁的十连问,继续升级到重量级锁的进阶版,检验一下自己离精通重量级锁还有多远。建议在读之前了解下Java中重量级锁的实现原理。 重量级锁的ObjectMonitor和JUC中的AQS有什么异同 为什么ObjectMonitor需要cxq和entryList两个等待队列 …

AUTOSAR_EXP_ARAComAPI的5章笔记(15)

☞返回总目录 相关总结:AutoSar AP CM服务接口级别的数据类型总结 5.5 服务接口级别的数据类型 以下章节描述了在ara::com中服务接口用户定义数据类型的 C 语言映射。这里的 “用户定义” 是指那些不是由ara::com API 定义(例如InstanceIdentifier、F…

2024前端面试题-1.自我介绍+常见考点汇总

一、自我介绍模板 个人信息教育背景工作经验技能专长优势特点 (注:括号)内的内容可视具体情况决定说不说。以下内容仅为个人想法,仅供参考交流,不喜勿喷,感谢留情~* 1、个人信息: 姓名&…

Leetcode 3325. Count Substrings With K-Frequency Characters I

Leetcode 3325. Count Substrings With K-Frequency Characters I 1. 解题思路2. 代码实现 题目链接:3325. Count Substrings With K-Frequency Characters I 1. 解题思路 这一题思路上就是一个滑动窗口。 我们考察窗口的左边界依次为0到n-1时右边界能够取到的最…

数据结构编程实践20讲(Python版)—19字典树

本文目录 19 字典树(Trie)S1 说明字典树结构字典树的构建与查找字典树的特点字典树的应用领域 S2 示例S3 应用1:基于 big.txt 实现单词的自动补全功能S3 应用2:实现 IP 路由中的最长前缀匹配S3 应用3:基于 Trie 的压缩…

THP4 SOP16 芯片 高速光耦芯片

光电耦合器输入端加电信号使发光源发光,光的强度取决于激励电流的大小,此光照射到封装在一起的受光器上后,因光电效应而产生了光电流,由受光器输出端引出,这样就实现了电一光一电的转换。 由于光耦合器输入输出间互相…

防火墙和堡垒机有什么区别?

防火墙和堡垒机在网络安全领域都扮演着至关重要的角色,但它们在功能、部署位置、作用范围等方面存在显著差异。 一、功能定位 防火墙:防火墙是一种网络安全系统,主要作用是在私有网络与公网之间建立一道安全屏障,监控和控制网络流量。它通过预定义的安全规则,决定哪些数…

5g工业路由器最新案例:高原气象站网络升级项目

背景: 某省气象局决定在高原地区升级其气象观测网络,以提高天气预报的准确性和及时性,同时为气候变化研究提供更可靠的数据支持。该项目面临以下挑战: 需要在高原广袤且地形复杂的区域部署大量自动气象站,要求网络覆…

【Excel】【VB和JS】表格内容姓名、卡号、身份证敏感信息转换为图片打印

VB代码: Function ConvertCellToImageAndPlace(n As Long, m As Long)Dim sourceCell As RangeSet sourceCell Sheets("Sheet2").Cells(n, m)sourceCell.CopyPicture Appearance:xlScreen, Format:xlPictureDim targetCell As RangeSet targetCell She…

优化SQL查询的最佳实践:提升数据库性能的关键

SQL 查询是数据库操作的核心,特别是当数据量庞大时,性能问题尤为明显。优化 SQL 查询不仅能减少响应时间,还能提高系统整体的可伸缩性。本文将从索引、查询结构、数据库设计和缓存等方面详细介绍如何优化 SQL 查询以提升性能。 一、索引的使…