APScheduler模块不同于python-crontab模块,它不会在系统上创建任何cronjob,所有任务将在运行时执行。
APScheduler是基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。
APScheduler提供了多种不同的调度器,方便开发者根据自己的实际需要进行使用;同时也提供了不同的存储机制,可以方便与Redis,数据库等第三方的外部持久化机制进行协同工作,总之功能非常强大和易用。
#!/usr/bin/env python
# coding=utf-8
'''
需求:
周一至周五开盘时间
09:30-11:30
13: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 datetime
from apscheduler.schedulers.blocking import BlockingScheduler
#from subprocess import call
import urllib2
def job_function():
# call(["./a.sh"])
req = urllib2.urlopen('http://www.123.com')
# BlockingScheduler
sched = 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()