python定时任务,Flask定时任务

1安装.
pip install Flask-APScheduler

调试模式下执行两次问题,加上use_reloader
app.run(host=“0.0.0.0”, port=5000, debug=True, use_reloader=False)

# 导入Flask类
import logging

from flask import Flask, Blueprint
from controller.index import user_bp

app = Flask(__name__)
#注册路由
app.register_blueprint(user_bp, url_prefix='/index')
# 装饰器的作用是将路由映射到视图函数index
@app.route('/')
def main_id():
    return '同步程序'

#定时任务启动
from taskSchedule import scheduler
scheduler.init_app(app)
scheduler.start()
# 修改调度器执行组件冗余日志级别
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)

# Flask应用程序实例的run方法启动WEB服务器
if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000, debug=True)


taskSchedule文件

from flask_apscheduler import APScheduler

scheduler = APScheduler()


# interval example, 间隔执行,30秒执行一次
@scheduler.task('interval', id='do_job_1', seconds=5, misfire_grace_time=900)
def job1():
    print('5秒执行一次')


# cron examples, 每分钟执行一次
@scheduler.task('cron', id='do_job_2', minute='*')
def job2():
    print('1分钟执行一次')


# 每周执行一次
@scheduler.task('cron', id='do_job_3', week='*', day_of_week='sun')
def job3():
    print('1周执行一次')


 
日志设置
如果定时任务执行间隔几秒钟, 调度程序的日志会很多,可以设置调度程序日志级别或完全禁用:

#设置调度程序的日志级别, 原本级别为info
 
scheduler.start()
scheduler.add_job(every_minute, trigger='cron', second=0, id='every_minute')
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
 
 
#或者禁用调度程序日志
logging.getLogger('apscheduler.executors.default').propagate = False

二、apscheduler
apscheduler 四个组件:

triggers: 任务触发器组件,提供任务触发方式
job stores: 任务商店组件,提供任务保存方式
executors: 任务调度组件,提供任务调度方式
schedulers: 任务调度组件,提供任务工作方式

triggers
支持三种任务触发方式

date:
固定日期触发器,任务只运行一次,运行完毕自动清除;若错过指定运行时间,任务不会被创建

| 参数 | 说明 |
| :——————————– | :——————- |
| run_date (datetime 或 str) | 作业的运行日期或时间 |
| timezone (datetime.tzinfo 或 str) | 指定时区 |

例如# 在 2019-4-24 00:00:01 时刻运行一次 start_system 方法
scheduler .add_job(start_system, 'date', run_date='2019-4-24 00:00:01', args=['text'])
interval:
时间间隔触发器,每个一定时间间隔执行一次。

| 参数 | 说明 |
| —————————- | ———- |
| weeks (int) | 间隔几周 |
| days (int) | 间隔几天 |
| hours (int) | 间隔几小时 |
| minutes (int) | 间隔几分钟 |
| seconds (int) | 间隔多少秒 |
| start_date (datetime 或 str) | 开始日期 |
| end_date (datetime 或 str) | 结束日期 |

cron:
cron风格的任务触发

参数	说明
year (int 或 str)	表示四位数的年份 (2019)
month(int\	str)	月 (范围1-12)
day(int\	str)	日 (范围1-31)
week(int\	str)	周 (范围1-53)
day_of_week (int\	str)	表示一周中的第几天,既可以用0-6表示也可以用其英语缩写表示
hour (int\	str)	表示取值范围为0-23minute (int\	str)	表示取值范围为0-59second (int\	str)	表示取值范围为0-59start_date (datetime\	str)	表示开始时间
end_date (datetime\	str)	表示结束时间
timezone (datetime.tzinfo\	str)	表示时区取值
(int|str) 表示参数既可以是int类型,也可以是str类型
(datetime | str) 表示参数既可以是datetime类型,也可以是str类型
job stores
支持四种任务存储方式

memory:默认配置任务存在内存中
mongdb:支持文档数据库存储
sqlalchemy:支持关系数据库存储
redis:支持键值对数据库存储
schedulers
调度器主要分三种,一种独立运行的,一种是后台运行的,最后一种是配合其它程序使用

BlockingScheduler: 当这个调度器是你应用中 唯一要运行 的东西时使用
BackgroundScheduler: 当 不运行其它框架 的时候使用,并使你的任务在 后台运行
AsyncIOScheduler: 当你的程序是 异步IO模型 的时候使用
GeventScheduler: 和 gevent 框架配套使用
TornadoScheduler: 和 tornado 框架配套使用
TwistedScheduler: 和 Twisted 框架配套使用
QtScheduler: 开发 qt 应用的时候使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大得369

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值