hand
_1_1_27
4
python3.X - Web - Flask1.1.1
共46篇
python3.X - Web - Flask1.1.1
返回栏目
0k
0.3k
1k
6k
0.6k
0.8k
0.3k
0.1k
0.2k
0.8k
0.6k
0.6k
0.1k
0.5k
0.2k
2k
0.3k
5k
2k
2k
1k
0.3k
1k
0.1k
1k
1k
0.5k
2k
2k
0.7k
1k
2k
0.1k
1k
0.1k
2k
2k
0.9k
5k
4k
1k
1k
3k
1k
0k
0k
返回python3.X - Web - Flask1.1.1栏目
作者:
贺及楼
成为作者
更新日期:2024-10-28 18:09:45
Python 的 Flask-APScheduler
是一个 Flask 扩展库,它集成了 APScheduler
,一个高级的 Python 定时任务框架。以下是 Flask-APScheduler
的一些主要作用和特点:
Flask-APScheduler
适用于需要在 Flask 应用中实现定时任务的场景,如定期数据更新、定时报告生成等。通过使用 Flask-APScheduler
,开发者可以更加方便地管理和维护应用中的定时任务。
pip install Flask-APScheduler
包 | 包中文名 | 释义 | 跳转 |
---|---|---|---|
Flask-APScheduler==1.13.1 | / | / | |
├── APScheduler [required: >=3.2.0,<4.0.0, installed: 3.10.4] | / | APScheduler是一个Python库,用于在应用程序中添加定时任务和作业调度功能。 | / |
│ ├── pytz [required: Any, installed: 2024.2] | / | pytz是Python的时区处理库,支持现代和历史时区信息,包括夏令时调整。 | / |
│ ├── six [required: >=1.4.0, installed: 1.16.0] | / | python的six库是一个用于处理 Python 2 和 Python 3 兼容性问题的工具库。 | / |
│ └── tzlocal [required: >=2.0,!=3.*, installed: 5.2] | / | tzlocal是一个Python库,用于自动检测并使用本地时区。 | / |
├── Flask==3.0.3 | / | 主包 | / |
│ ├── blinker [required: >=1.6.2, installed: 1.8.2] | / | blinker 是一个小巧的 Python 库,用于实现对象之间的信号传递。 | / |
│ ├── click [required: >=8.1.3, installed: 8.1.7] | / | Click是一个Python库,用于创建命令行界面,支持装饰器语法,易于创建命令行应用程序。 | / |
│ ├── itsdangerous [required: >=2.1.2, installed: 2.2.0] | / | itsdangerous是一个Python库,用于安全地传递信任数据,支持签名和加密,常用于Web应用中的会话管理和数据验证。 | / |
│ ├── Jinja2 [required: >=3.1.2, installed: 3.1.4] | / | Jinja2是一个现代且设计友好的Python模板引擎,广泛用于Web应用开发。 | Flask - 扩展 - jinja2 - 模版处理信息 - {{}} |
│ │ └── MarkupSafe [required: >=2.0, installed: 2.1.5] | / | MarkupSafe 是一个 Python 库,用于安全地处理和转义 HTML 和 XML 标记。 | / |
│ └── Werkzeug [required: >=3.0.0, installed: 3.0.4] | / | Werkzeug是Python的WSGI工具包,用于开发Web应用程序,提供请求、响应对象和中间件。 | / |
│ └── MarkupSafe [required: >=2.1.1, installed: 2.1.5] | / | MarkupSafe 是一个 Python 库,用于安全地处理和转义 HTML 和 XML 标记。 | / |
└── python-dateutil [required: >=2.4.2, installed: 2.9.0.post0] | / | python-dateutil是一个Python库,提供强大的日期和时间处理功能。 | / |
└── six [required: >=1.5, installed: 1.16.0] | / | 同上 | / |
from apscheduler.schedulers.background import BackgroundScheduler
from flask_apscheduler import APScheduler
import atexit
import fcntl # 只能用于linux
scheduler = APScheduler(BackgroundScheduler(timezone="Asia/Shanghai")) # 定时任务 - 初始化
init.py的create_app()加2条
def create_app():
......
db.app = app # APScheduler实现数据库
db.init_app(app) # 数据库,原本就有的
configure_scheduler(app)
init.py加configure_scheduler(app)方法
加个锁
def configure_scheduler(app):
"""Configure Scheduler"""
f = open("scheduler.lock", "wb")
try:
fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
scheduler.init_app(app) # 定时任务 - 把任务列表放入 flask
scheduler.start() # 定时任务 - 启动任务列表
except:
pass
def unlock():
fcntl.flock(f, fcntl.LOCK_UN)
f.close()
atexit.register(unlock)
@scheduler.task('interval',minutes=5)
@scheduler.task('cron',hour=23,minute=17)
def xxx():
from app import create_app
app = create_app()
with app.app_context():
xxx # 可以数据库搜索
xxx # 可以使用aap.config
3种方式:
1、date 一次性指定固定时间,只执行一次
run_date(str)– 精确时间
‘run_date’: ‘2021-3-21 17:30:30’
2、interval 间隔调度,隔多长时间执行一次
weeks (int) – 间隔几周
days (int) – 间隔几天
hours (int) – 间隔几小时
minutes (int) – 间隔几分钟
seconds (int) – 间隔多少秒
start_date (datetime|str) – 开始日期
end_date (datetime|str) – 结束日期
3、cron 指定相对时间执行,比如:每月1号、每星期一执行
year (int|str) – 年,4位数字
month (int|str) – 月 (范围1-12)
day (int|str) – 日 (范围1-31)
week (int|str) – 周 (范围1-53)
day_of_week (int|str) – 周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun)
hour (int|str) – 时 (范围0-23)
minute (int|str) – 分 (范围0-59)
second (int|str) – 秒 (范围0-59)
start_date (datetime|str) – 最早开始日期(包含)
end_date (datetime|str) – 最晚结束时间(包含)
因为没有上下文,所以调用create_app
修改生效:要ctrl + C 完全切断,再重启才行
enable-threads=true # 允许程序内部启动多线程,为定时器
preload=true # 用--preload启动uWSGI,确保scheduler只在loader的时候创建一次,为定时器
lazy-apps=true
python3.X - Web - Flask1.1.1
整章节共46节
快分享给你的小伙伴吧 ~