内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

flask调度任务

2018-11-18 21:31 出处:清屏网 人气: 评论(0

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

一、方案

  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,是阻塞型的,如果使用异步编程请不要使用
分享给小伙伴们:
本文标签: flask

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号