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()