APScheduler模块不同于python-crontab模块,它不会在系统上创建任何cronjob,所有任务将在运行时执行。
APScheduler是基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。
APScheduler提供了多种不同的调度器,方便开发者根据自己的实际需要进行使用;同时也提供了不同的存储机制,可以方便与Redis,数据库等第三方的外部持久化机制进行协同工作,总之功能非常强大和易用。
#!/usr/bin/env python# coding=utf-8'''需求:周一至周五开盘时间09:30-11:3013:00-15:00每隔10秒拉取所有版块数据到redis参考: https://lz5z.com/Python%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F/环境: python2.7.5前提: 1.yum install python-pip 2.pip install apscheduler'''from datetime import datetimefrom apscheduler.schedulers.blocking import BlockingScheduler#from subprocess import callimport urllib2def job_function():# call(["./a.sh"]) req = urllib2.urlopen('http://www.123.com')# BlockingSchedulersched = BlockingScheduler()# Schedule job_function to be called every ten seconds,but starts on 9:15 and stops on 11:30#sched.add_job(job_function, 'interval', seconds=10, start_date='2018-04-12 9:15:00', end_date='2018-04-12 11:30:00')sched.add_job(job_function, 'cron', day_of_week='mon-fri', hour='9', minute='30-59', second='*/10')sched.add_job(job_function, 'cron', day_of_week='mon-fri', hour='10', second='*/10')sched.add_job(job_function, 'cron', day_of_week='mon-fri', hour='11', minute='00-30', second='*/10')sched.add_job(job_function, 'cron', day_of_week='mon-fri', hour='13-14', second='*/10')sched.start()