flask 框架下定时任务通常使用 flask_apscheduler 第三方库。flask_apscheduler 功能非常强大,能满足各种定时任务的需求。

 

安装

pip3 install flask_apscheduler

 

使用方法

1.下面这段 example 是官网上的,我加了些注释,方便学习。

from flask import Flask
from flask_apscheduler import APScheduler


class Config(object):
    JOBS = [
        {
            'id': 'job1',                # 一个标识
            'func': '__main__:job1',     # 指定运行的函数 
            'args': (1, 2),              # 传入函数的参数
            'trigger': 'interval',       # 指定 定时任务的类型
            'seconds': 10                # 运行的间隔时间
        }
    ]

    SCHEDULER_API_ENABLED = True


def job1(a, b):                          # 运行的定时任务的函数
    print(str(a) + ' ' + str(b))


if __name__ == '__main__':
    app = Flask(__name__)                 # 实例化flask
    app.config.from_object(Config())      # 为实例化的 flask 引入配置 

    scheduler = APScheduler()                  # 实例化 APScheduler
    # it is also possible to enable the API directly
    # scheduler.api_enabled = True
    scheduler.init_app(app)                    # 把任务列表放入 flask
    scheduler.start()                          # 启动任务列表
 
    app.run()                                  # 启动 flask

 2.多个定时任务

 Config 类的属性 JOBS 是列表,可以定义多个定时任务,如下

from flask import Flask
from flask_apscheduler import APScheduler


class Config(object):
    JOBS = [
        {
            'id': '1',
            'func': '__main__:job1',
            'args': (1, 2),
            'trigger': 'interval',
            'seconds': 10
        },
        {
            'id': '2',
            'func': '__main__:job2',
            'trigger': 'interval',
            'seconds': 10
        }
    ]

    SCHEDULER_API_ENABLED = True


def job1(a, b):
    print(str(a) + ' ' + str(b))

def job2():
    print('Hello world!')


if __name__ == '__main__':
    app = Flask(__name__)
    app.config.from_object(Config())

    scheduler = APScheduler()
    # it is also possible to enable the API directly
    # scheduler.api_enabled = True
    scheduler.init_app(app)
    scheduler.start()

    app.run()
View Code

相关文章: