flask调度任务

2018-11-20 03:25:49来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

一、方案

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

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

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

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

 

总结:

就是它了

 

二、代码示例

#! /usr/bin/env python
from flask import Flask
from flask_apscheduler import APScheduler
import time


class 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,是阻塞型的,如果使用异步编程请不要使用

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:从零开始的Python学习 知识补充sorted

下一篇:Python学习之旅(八)