zoukankan      html  css  js  c++  java
  • APScheduler+Flask

    1.首先创建一个定时任务管理的类

    创建一个 ScheduleTask.py,定义一个类

    class ScheduleConfig(object):
    JOBS = [
    {
    'id': '配置文件校验任务', #任务名,自己随便起
    'func': 'service.ConfigCheckService:compareConfig', #任务 调用的方法, 包.文件:方法名
    'trigger': { # trigger为调度类型

    'type': 'cron',

    'day_of_week': "0-6",
                    'hour': '*',
    'minute': '*',
    'second': '0'
    },
    'args':'',

    },
    {
    'id': '触发器为interval的测试任务',
    'func': 'task.ScheduleTask:job2',
    'args': '',
    'trigger': 'interval',
    'seconds': 120
    }

    ]

    SCHEDULER_API_ENABLED = True

    2. 在flask的启动文件(也就是app所在的文件
    )加入定时任务策略
    app = Flask(__name__)

    app.config.from_object(ScheduleTask.ScheduleConfig()) #在app里配置定时任务的类
    app.config.update(RESTFUL_JSON=dict(ensure_ascii=False))

    api = Api(app)
    api.add_resource(dataPushController.DeveloperDataPush, '/datapush/developerUrl')
    api.add_resource(dataPushController.ProductDataPush, '/datapush/productUrl')

    #初始化定时任务并启动
    scheduler = APScheduler()
    scheduler.init_app(app)
    scheduler.start()
     
    FAQ.定时任务有时候会执行失败
    Run time of job "9668_hack (trigger: interval[1:00:00], next run at: 2018-10-29 22:00:00 CST)" was missed by 0:01:47.387821

    问题解决如下(增加misfire_grace_time 等三个参数
    JOBS = [
    {
    'id': '配置文件校验任务',
    'func': 'service.ConfigCheckService:compareConfig',
    'trigger': {
    'type': 'cron',
    'day_of_week': "0-6",
    'hour': '*',
    'minute': '0/2',
    'second': '0'
    },
    'args':'',
    'coalesce': True, # 积攒的任务只跑一次
    'max_instances': 100, # 支持1000个实例并发
    'misfire_grace_time': 600 # 600秒的任务超时容错

    }

    ]
     


  • 相关阅读:
    Redis集群搭建-韩国庆
    韩国庆讲师 个人简介
    iOS XML解析使用-韩国庆
    iOS移动开发CoreDate讲解
    多线程讲解韩老师
    MJRefresh在Xode6中报错处理
    调用第三方提供的webService服务(4)
    使用JDK开发WebService(3)
    WebService相关概念介绍(2)
    WebService的相关概念(1)
  • 原文地址:https://www.cnblogs.com/peak911/p/11810451.html
Copyright © 2011-2022 走看看