23.FastAPI后台任务
23.FastAPI后台任务
在应用开发中,偶尔会有这样的需求:当一个请求结束后,程序需要执行一些较慢的数据处理,比如:发送邮件、大的数据量的统计汇总等操作。在FastAPI中,提供了后台任务来处理响应后的任务。FastAPI后台任务的创建包括任务函数的创建,声明后台任务及添加后台任务。
23.1创建任务函数
任务函数是一个可以接收参数的标准函数, 可以是一个async def或正常的def函数。如:
async def write_log(msg:str):with open(file='access_log.log', mode='a') as log_file:log_file.write('{0}-{1}\r\n'.format(datetime.now().strftime('%Y-%m-%d, %H:%M:%S'), msg))
以上任务函数的作用是将消息写入日志文件。
23.2声明后台任务
声明后台任务的方法是在需要调用后台任务的路由函数中声明BackgroundTasks类型的对象,BackgroundTasks从fastapi中导入。如:
@app.get(path='/') async def root(backgroundtasks: BackgroundTasks):
23.3添加后台任务
在路由操作函数中,调用 后台任务对象的add_task()方法添加后台任务函数并传递参数。如:
backgroundtasks.add_task(write_log, msg=str(uuid.uuid1()))
完整的代码如下:
# coding: utf-8 from fastapi import FastAPI from fastapi import BackgroundTasks from datetime import datetime import uuid app = FastAPI() async def write_log(msg:str):with open(file='access_log.log', mode='a') as log_file:log_file.write('{0}-{1}\r\n'.format(datetime.now().strftime('%Y-%m-%d, %H:%M:%S'), msg)) @app.get(path='/') async def root(backgroundtasks: BackgroundTasks):backgroundtasks.add_task(write_log, msg=str(uuid.uuid1()))return "Hello world"
执行请求:
curl http://127.0.0.1:8000 "Hello world"
多次执行后查看日志文件access_log.log,其内容如下:
2022-02-07, 15:43:30-a4d2d29a-87e9-11ec-b60a-70c94ec87656 2022-02-07, 15:43:31-a54c0c6c-87e9-11ec-bdd9-70c94ec87656 2022-02-07, 15:43:31-a5bb71d2-87e9-11ec-ba73-70c94ec87656
23.FastAPI后台任务相关推荐
- NoPause/NoEmgAbort的任务 与后台任务的区别
NoPause/NoEmgAbort的任务示例 下面的例子显示了一个程序,可以监视控制器的错误并根据错误编号在发生错误时切换I/O On/Off. Function main Xqt ErrorMon ...
- Android 8.0适配指北
本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发. Android适配系列: Android 6.0 的动态权限管理 Android 7.0脱坑指南 Android 8.0适配指北 ...
- FastAPI 入门教程
fastapi官网:https://fastapi.tiangolo.com, 中文官网:https://fastapi.tiangolo.com/zh/ 一.安装部署 前提:python3 pyc ...
- fastapi——简单快速入门
fastapi--快速入门笔记 根据慕课网视频教程 地址:https://www.bilibili.com/video/BV1iN411X72b?p=36 print("\033[31m5. ...
- 2021-10-22 学习笔记:FastAPI基础使用指南
2021-10-22 学习笔记:FastAPI基础使用指南 已经第三针疫苗了,祝所有人平安! 简单使用 路径参数 查询参数 请求体 查询参数和字符串校验 路径参数和数值校验 请求体参数 请求体 -- ...
- Celery + Flower + FastAPI + RabbitMQ ,Python实现异步消息队列和监控
@Author:Runsen 消息队列 消息队列让应用程序在用户请求之外异步执行称为任务的工作.如果应用程序需要在后台执行工作,它会将任务添加到任务队列中.这些任务稍后由工作服务执行. Celery ...
- 三分钟了解 Python3 的异步 Web 框架 FastAPI
快速编码,功能完善.从启动到部署,实例详解异步 py3 框架选择 FastAPI 的原因. FastAPI 介绍 FastAPI 与其它 Python-Web 框架的区别 在 FastAPI 之前,P ...
- fastapi 查询参数和字符串校验 / 路径参数和数值校验
文章目录 1. 约束限制 2. 必须参数 3. 查询参数列表 / 多个值 4. 声明更多元数据 5. 别名参数 6. 弃用参数 7. Path 路径参数 8. 按需对参数排序 learn from h ...
- 2021 年最佳开源软件榜单,Python 高性能框架 FastAPI 上榜了!
转自 | OSC开源社区 本文是 InfoWorld 2021 年公布的<最佳开源软件榜单>翻译稿. InfoWorld 是一家 ...
最新文章
- 替代方法_ASD干预:替代行为的正确使用方法和注意事项
- MTK:oemlock介绍
- POJ - 3080 Blue Jeans(暴力+KMP)
- UOJ.117.欧拉回路
- DtCms.ActionLabel.Article.cs
- english 2012020601
- Leetcode每日一题:155.min-stack(最小栈)
- 营销和生意人的4项基本修炼
- 剑指Offer之从上往下打印二叉树
- 机器学习笔试面试整理
- 无人车之美——论无人车辆系统的软件架构
- 温哥华岛大学计算机科学,温哥华有哪些知名大学排名(温哥华地区大学排名一览)...
- 支付宝小程序登录PHP
- Mysql如何存取Emoji表情包
- Bugku CRYPTO No Ciphertext RSA writeup by 树木
- 基于springboot的茶叶销售商城网站
- 【Qt+FFmpeg】给视频添加时间水印
- 免费的音频格式转换器有哪些?不妨试试这几种转写软件
- 训练 open-mmlab/mmclassification
- Windows AD证书服务系列---部署及管理证书模板(1)
热门文章
- vscode中文插件不生效问题解决
- PS学习笔记——通过三种方式调整人像照片亮度
- Ansible 系列之 Inventory 资源清单介绍
- jQuery实现html的table表的th和td标签的显示和隐藏
- Nexus 3 清理docker镜像
- 华为鸿蒙可以作为电脑系统吗,华为正式发布鸿蒙手机操作系统:让万物互联成为可能...
- python 表情包制作库_Django+PIL 做一个表情包生成网站
- SQL Server2016无域群集与高可用性AlwaysON配置新手教程
- 教师如何做到语言精练
- Oracle 表关联、半关联、反关联