博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask调度任务
阅读量:6686 次
发布时间:2019-06-25

本文共 967 字,大约阅读时间需要 3 分钟。

最近遇到需要,需要定时清理数据库的过期数据,记录下处理过程

一、方案

  1. 使用time.sleep()
  2. 使用threading.Timer()
  3. APScheduler模块

方案1太消耗资源,而且Low

方案2适合只做一次的任务,循环执行比较复杂,容错率低

方案3会从系统底层帮助我们选用合适的工具,但不能利用flask的主线程

 

总结:

就是它了

 

二、代码示例

#! /usr/bin/env pythonfrom flask import Flaskfrom flask_apscheduler import APSchedulerimport timeclass Config:    JOBS = [        {            'id': '111',              # 不重复的标识            'func': '__main__:job_1',  # 定时执行的 模块:函数            'trigger': 'cron',         # 定时执行,其他可选参数data,interval            'hour': 16,                # 每天16:26分执行            'minute': 26        }    ]def job_1():  # 一个函数,用来做定时任务的任务。    print(time.time())app = Flask(__name__)app.config.from_object(Config)@app.route("/")def test():    return "hi"if __name__ == '__main__':    scheduler = APScheduler()    scheduler.init_app(app)    scheduler.start()    app.run(debug=False)

 

三、注意事项

  • 需要scheduler.init_app(app),别忘记了
  • 调度器默认使用BackgroundScheduler,是阻塞型的,如果使用异步编程请不要使用

 

转载于:https://www.cnblogs.com/igzh/p/9978326.html

你可能感兴趣的文章
Excel 之查找与替换
查看>>
Mysql实现rownum
查看>>
python:使用OO和工厂模式解决问题
查看>>
C++学习-2
查看>>
SQL中查询数据表字段名称的查询语句
查看>>
关于masonry
查看>>
mysql单表导入数据,全量备份导入单表
查看>>
GAITC 2019全球人工智能技术大会(南京)
查看>>
使用gradle生成protobuf
查看>>
transition transform animate的使用
查看>>
WebService_HelloWorld
查看>>
【翻译】Ext JS最新技巧——2014-5-12
查看>>
全局临时表
查看>>
谈谈加载(Loading)的那点事
查看>>
关于nginx的Job for nginx.service failed because the control process exited with error code.错误
查看>>
微信公众平台开发(108) 微信摇一摇
查看>>
Java 函数参数传递方式详解 分类: Java Game ...
查看>>
Flex 截图 实例
查看>>
6-4 内部类
查看>>
cryptography TransformFinalBlock 返回指定长度的哈希值
查看>>