zoukankan      html  css  js  c++  java
  • python apscheduler的使用

    # !/usr/bin/env python3
    # -*- coding: utf-8 -*-

    import pytz
    from util import log, cfg
    from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR
    from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
    from apscheduler.schedulers.blocking import BlockingScheduler
    logger = log.get_logger('timed_task', 'INFO')


    def init():
    logger.info("scheduler_handler main start run")


    def test():
    print('测试成功')


    def main():
    # 执行需要初始化数据的处理
    init()

    # 时区设定
    timezone = pytz.timezone('Asia/Shanghai')

    # 执行器
    executors = {'default': ThreadPoolExecutor(20), 'processpool': ProcessPoolExecutor(3)}
    job_defaults = {'coalesce': True, 'max_instances': 3}
    # 阻塞主线程的运行
    scheduler = BlockingScheduler(timezone=timezone, executors=executors, job_defaults=job_defaults)

    ####################################################################################################################

    if cfg.sys == 'Linux':
    scheduler.add_job(func=test, trigger='interval', seconds=10)
    scheduler.add_job(func=test, trigger="cron", day_of_week='*', hour='23', minute='50')

    else:
    scheduler.add_job(func=test, trigger='interval', seconds=10)

    ####################################################################################################################
    def event_listener(event):

    if event.exception:
    exception = str(event.exception)
    scheduled_run_time = str(event.scheduled_run_time)
    traceback = str(event.traceback)

    # 报错信息打印出来
    print(" ", "#" * 50, " ")
    logger.info(
    f"event scheduled_run_time:{scheduled_run_time} exception: {exception} traceback: {traceback}")
    print(" ", "#" * 50, " ")
    else:
    # 正常执行的处理
    pass
    #
    # # 监听正常运行和运行异常
    scheduler.add_listener(event_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)

    try:
    # 启动定时器
    scheduler.start()
    except (KeyboardInterrupt, SystemExit):
    scheduler.shutdown()
    logger.debug("scheduler start-up fail")


    if __name__ == '__main__':
    main()
  • 相关阅读:
    WebService-.Net:添加web引用和添加服务引用有什么区别?
    袁氏-人物-科学家:袁隆平(首届国家最高科学技术奖得主、杂交水稻之父)
    术语-BLOB:BLOB
    术语-PM:PM/项目管理 百科
    计算机:SAP (服务访问点(Service Accessing point))
    服务器-Web服务器-Tengine:Tengine 百科
    笔记-Git:Git 笔记
    DB-MDM:MDM/主数据管理 百科
    DB-MD:MD/主数据
    [Ext JS 4] 实战之 带week(星期)的日期选择控件
  • 原文地址:https://www.cnblogs.com/yz-w/p/15540457.html
Copyright © 2011-2022 走看看