Python Flask实现后台任务轻松构建高效API应用
作者:csdn1561168266 发布时间:2021-09-25 01:37:43
标签:Python,Flask,API,后台任务
大家好,今天来学习用Flask API创建Python后台任务。
在Python中,有若干解决方案可以实现后台任务,比如Celery或Redis Queue,都是实现任务队列系统的好方法。但使用这二者都比较麻烦。设想这样一个场景,我们用Flask建立一个API,实现从一个终端调用后台任务,并用另一个终端停止后台任务。
使用Flask建立了一个简单的API,有两个主要的方法,一个用于启动后台任务,另一个用于停止。
为了管理任务的生命周期,我们使用Event Objects
,这是一种简单的线程间通信机制。
如下所示是所需导入的库、线程事件声明和后台任务方法:
from time import sleep
from flask import Flask
from flask_cors import CORS
import threading
thread_event = threading.Event()
def backgroundTask():
while thread_event.is_set():
print('Background task running!')
sleep(5)
这里的关键是is_set()
方法,它将返回内部线程事件标志的值:true
或false
。
首先,使用set()
方法把标志设置为true
,它将启动一个线程,并连续运行backgroundTask
方法。
@app.route("/start", methods=["POST"])
def startBackgroundTask():
try:
thread_event.set()
thread = threading.Thread(target=backgroundTask)
thread.start()
return "Background task started!"
except Exception as error:
return str(error)
如果要停止任务,调用clear()
方法将标志设置为false
,以停止正在运行的线程。
@app.route("/stop", methods=["POST"])
def stopBackgroundTask():
try:
thread_event.clear()
return "Background task stopped!"
except Exception as error:
return str(error)
来源:https://blog.csdn.net/csdn1561168266/article/details/130159771


猜你喜欢
- MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认值为当前更新日期与时间的功能,你可以使用TIMESTAMP列类型下面
- Python 风格规范(Google)本项目并非 Google 官方项目, 而是由国内程序员凭热情创建和维护。如果你关注的是 Google
- 目录prometheus通过exporter监控mysql,并用grafana图表展示1、测试机器 2、配置mysql host0
- 你们要的3D太阳系图片上传之后不知为何帧率降低了许多。。。日地月三体所谓三体,就是三个物体在重力作用下的运动。由于三点共面,所以三个质点仅在
- 本文实例讲述了Python实现识别图片内容的方法。分享给大家供大家参考,具体如下:python识别图片内容。这里我的环境为windows64
- 这个技巧将教你如何用css做出漂亮的文本按钮,有活力的按钮将节省你很多制作图片的时间,也能让你一天的工作中成为一个快乐的人,让我们一起看看效
- 首先下载源tar包可利用linux自带下载工具wget下载,如下所示:wget http://www.python.org/ftp/pyth
- 不用切图,只要设置基本的 图片及其属性即可!用鼠标右键控制图片翻转!<style>*{ FONT-SIZE: 12px; }se
- 1.limit函数的语法和用法(1)常用且简单的语法和用法①语法:limit n 即limit <参数>具体语法:select
- 图例如下https://github.com/Dongvdong/python_Smartvoice上电后,只要周围声音超过 2000,开始
- 本文为大家分享了使用navicat将csv文件导入mysql的具体代码,供大家参考,具体内容如下1.打开navicat,连接到数据库并找到自
- 训练的时候内存一直在增加,最后内存爆满,被迫中断。后来换了一个电脑发现还是这样,考虑是代码的问题。检查才发现我的代码两次存了loss,只有一
- PyCharm设置数据库,查询数据库语句1、首先先安装BataBase数据插件2、打开DB Navigator 打开DataBase视图3、
- NumPy矩阵和向量矩阵在NumPy中,矩阵可以看作是一个二维数组,其中每个元素都可以通过行列坐标来定位。它表示为一个m×
- 请问如何实现复合查询?我们用下面的代码来实现动态生成查询条件,动态显示结果的复合查询。set database to databasenam
- 要编写一个简单的能发布网页的 Python 应用服务器,可以使用 Python 自带的 http.server 模块来实现。http.ser
- 用Dreamweaver制作网页时,如果插入的图片、GIF动画、声音、视频或链接的网页是用中文命名的,在用IE浏览器浏览时可能显示不出来。以
- 如果我有个list,想判断其中的元素是否满一个条件,后面的元素大于或等于前面元素。Python中的写法就比较多了。下面就主要介绍下一般的写法
- API的应用通常会处理json数据,刚好今天看到了json字符串和python字符串的区别,放一段代码,区别一下子就看出来,的确json 库
- 在store.js里面添加如下的代码就可以了:// 热重载if (module.hot) { // 指定要监控的文件 module.hot.