目錄html
APScheduler(Advanced Python Scheduler)是一個輕量級的Python定時任務調度框架(Python庫)。
APScheduler有三個內置的調度系統,其中包括:python
APScheduler能夠任意混合和匹配調度系統和做業存儲的後端,其中支持後端存儲做業包括:web
APScheduler內繼承了幾個常見的Python框架:數據庫
使用pip安裝:後端
pip install apscheduler
若是超時或者出現別的狀況,能夠選擇:併發
# 法1使用豆瓣源下載 pip install -i https://pypi.doubanio.com/simple/ apscheduler # 法2使用清華源下載 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple apscheduler
要是再不行,點擊該連接或者pypi官網下載了。下載並解壓縮,進入跟setup.py文件同級的目錄,打開cmd,使用命令進行下載:框架
python setup.py install
APScheduler共有4種組件,分別是:異步
若是你的應用在每次啓動的時候都會從新建立做業,那麼使用默認的做業存儲器(MemoryJobStore)便可,可是若是你須要在調度器重啓或者應用程序奔潰的狀況下任然保留做業,你應該根據你的應用環境來選擇具體的做業存儲器。例如:使用Mongo或者SQLAlchemy JobStore (用於支持大多數RDBMS)async
對執行器的選擇取決於你使用上面哪些框架,大多數狀況下,使用默認的ThreadPoolExecutor已經可以知足需求。若是你的應用涉及到CPU密集型操做,你能夠考慮使用ProcessPoolExecutor來使用更多的CPU核心。你也能夠同時使用二者,將ProcessPoolExecutor做爲第二執行器。tornado
當你調度做業的時候,你須要爲這個做業選擇一個觸發器,用來描述這個做業什麼時候被觸發,APScheduler有三種內置的觸發器類型:
當你須要調度做業的時候,你須要爲這個做業選擇一個觸發器,用來描述該做業將在什麼時候被觸發,APScheduler有3中內置的觸發器類型:
有兩種方式能夠添加一個新的做業:
import datetime from apscheduler.schedulers.blocking import BlockingScheduler def job2(text): print('job2', datetime.datetime.now(), text) scheduler = BlockingScheduler() scheduler.add_job(job2, 'date', run_date=datetime.datetime(2019, 2, 25, 19, 5, 6), args=['text'], id='job2') scheduler.start()
上例中,只在2010-2-25 19:05:06執行一次,args傳遞一個text參數。
下面來個簡單的例子,做業每一個5秒執行一次:
import datetime from apscheduler.schedulers.blocking import BlockingScheduler def job1(): print('job1', datetime.datetime.now()) scheduler = BlockingScheduler() scheduler.add_job(job1, 'interval', seconds=5, id='job1') # 每隔5秒執行一次 scheduler.start()
天天凌晨1點30分50秒執行一次
from apscheduler.schedulers.blocking import BlockingScheduler # 後臺運行 sc = BlockingScheduler() f = open('t1.text', 'a', encoding='utf8') @sc.scheduled_job('cron', day_of_week='*', hour=1, minute='30', second='50') def check_db(): print(111111111111) if __name__ == '__main__': try: sc.start() f.write('定時任務成功執行') except Exception as e: sc.shutdown() f.write('定時任務執行失敗') finally: f.close()
see also: APScheduler(Python化的Cron)使用總結 定時任務 | APScheduler