APScheduler全程為Advanced Python Scheduler,是一款輕量級的Python任務調度框架。它允許你像Cron那樣安排定期執行的任務,並且支持Python函數或任意可調用的對象。
安裝APScheduler
可以使用pip工具安裝:
pip install apscheduler
或在Pypi上下載最新的源碼包(https://pypi.python.org/pypi/APScheduler/)進行安裝:
python setup.py install
簡單的應用(翻譯自官方文檔)
以默認配置啟動Scheduler
from apscheduler.scheduler import Scheduler sched = Scheduler() sched.start()
from
apscheduler.scheduler
import
Scheduler
sched
=
Scheduler()
sched.start()
1.基於固定時間的調度:
from datetime import date from apscheduler.scheduler import Scheduler # 啟動Scheduler sched = Scheduler() sched.start() # 定義被自動調度的函數 def my_job(text): print text # 定義任務的執行時間(2013年5月17日) exec_date = date(2013, 5, 17) # 加入到任務隊列,並將其賦值給變量以方便取消等操作 job = sched.add_date_job(my_job, exec_date, ['text'])
2.周期任務:
def job_function(): print "Hello World" # job_function將會每兩小時執行一次 sched.add_interval_job(job_function, hours=2) # 與上面的任務相同,不過規定在2013-5-17 18:30之后才開始運行 sched.add_interval_job(job_function, hours=2, start_date='2013-5-17 18:30')
裝飾器版本:
@sched.interval_schedule(hours=2) def job_function(): print "Hello World"
3.Cron風格的任務的調度:
def job_function(): print "Hello World" # 安排job_function函數將會在六月、七月、十一月和十二月的第三個星期五中的0點、1點、2點和3點分別執行 sched.add_cron_job(job_function, month='6-8,11-12', day='3rd fri', hour='0-3')
裝飾器版本:
@sched.cron_schedule(day='last sun') def some_decorated_task(): print "I am printed at 00:00:00 on the last Sunday of every month!"
更強大的使用方法可以進一步參考官方文檔。