python使用apscheduler作定时任务的管理

    工做中常常须要作一些定时任务,以前基本都是用crontab来定时执行脚本,python也有一个apscheduler方便进行定时任务的管理,因此我简单学习了下apscheduler的使用。html

BlockingScheduler
# coding=utf-8
from time import sleep
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor

__author__ = 'chenglp'



#执行器
executors = {
    'default': ThreadPoolExecutor(10),
    'processpool': ProcessPoolExecutor(3),
}

import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.schedulers.background import BackgroundScheduler

import logging
logging.basicConfig()



def call_job1():
   sleep(3)
   print 'job1 run at %s' % datetime.datetime.now().isoformat()

def call_job2():
   print 'job2 run at %s' % datetime.datetime.now().isoformat()


if __name__ == '__main__':
    
    bs = BlockingScheduler(executors=executors)
    bs.add_job(call_job1,  'interval', seconds=2, executor='processpool', max_instances=2, id='call_job1')
    bs.add_job(call_job2, 'interval', seconds=2, executor='processpool')
    try:
        bs.start()
        sleep(10)
    except (KeyboardInterrupt, SystemExit):
        bs.shutdown()
        pass

在生成Scheduler时,能够传入不少参数,如jobstores(任务的存储方式), executors(执行方式,能够配置时线程仍是进程),job_defaults(一些其余默认配置)python

而后使用add_job增长任务,第二个参数可选为date(一次性指定日期);interval(在某个时间范围内间隔多长时间执行一次);cron(和unix crontab格式兼容,最为强大),这个参数决定了以后的时间如何配置。这里还指定了下executor为哪一个,以前定义了default和processpool两个,tornado

最后使用start()方法即开始定时任务,更多的操做能够查看apscheduler的官网,oop

TornadoScheduler

用官方的例子:
学习

from datetime import datetime
import os

from tornado.ioloop import IOLoop
from apscheduler.schedulers.tornado import TornadoScheduler


def tick():
    print('Tick! The time is: %s' % datetime.now())


if __name__ == '__main__':
    scheduler = TornadoScheduler()
    scheduler.add_job(tick, 'interval', seconds=3)
    scheduler.start()
    print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))

    # Execution will block here until Ctrl+C (Ctrl+Break on Windows) is pressed.
    try:
        IOLoop.instance().start()
    except (KeyboardInterrupt, SystemExit):
        scheduler.shutdown()
        pass

能够看到很好的跟tornado融合。spa

参考连接:线程

http://www.bubuko.com/infodetail-716148.html
unix

http://apscheduler.readthedocs.org/en/latest/
code

相关文章
相关标签/搜索