在Flask中使用APScheduler实现定时任务

编排定时任务是后台应用中常用的一个功能。APScheduler框架是在Python中常用的一个管理、调度定时任务的框架。该框架功能强大,支持多种调度方式。本文演示在Flask Web应用中如何集成 APSchedule。

在本文中,使用 Flask-APScheduler 来集成 APScheduler。

示例简介

在本文中,使用一个简单的Flash示例,假设项目结构如下:

1
2
3
4
+ app
__init__.py
jobs.py
main.py

Flask 应用由 app 模块来启动, 具体的定时任务的编写在 app 模块中的 jobs.py 文件中。

安装 Flask-APScheduler

执行

1
pip install Flask-APScheduler

定义要执行的定时任务

在示例中,我们简单的定义一个打印一行文本的方法

1
2
def job1():
print('job1 running....')

定义调度规则

在 app 模块的 init.py 文件中,我们初始化 Flask, 并启动 APScheduler。 通过使用 Config 对象,我们定义了一个调度规则,定义在周一到周五的6点50分执行 job1。

注意: JOBS 中 func 定义的写法,一定要和 from app.jobs import * 对应起来,否则很容易出现 module not found 的错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from flask import Flask
from flask_apscheduler import APScheduler

from app.jobs import *

class Config(object):
JOBS = [
{
'id': 'job1',
'func': 'app:job1',
'args': '',
'trigger': {
'type': 'cron',
'day_of_week':"mon-fri",
'hour':'6',
'minute':'50',
'second': '0'
}
}
]

app = Flask(__name__)

scheduler = APScheduler()
app.config.from_object(Config())
scheduler.init_app(app)
scheduler.start()

@app.route('/')
def index():
return 'hello'

本文标题:在Flask中使用APScheduler实现定时任务

文章作者:晨星

发布时间:2019年10月23日 - 21:10

最后更新:2020年09月16日 - 08:09

原始链接:https://www.mls-tech.info/python/python-flask-apschedule/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。