這兩天因?yàn)轫?xiàng)目需要用到任務(wù)調(diào)度,調(diào)研了一下認(rèn)為APScheduler?是比較適合的。沒有celery那么重剂碴,也能覆蓋大部分的需求,可以持久化任務(wù)诗赌,也可以添加刪除任務(wù)汗茄,因此選用了APScheduler。
根據(jù)官方文檔铭若,整理了一下心得洪碳。
啟動
1.一旦啟動了scheduler,你就不再能對scheduler的配置進(jìn)行修改叼屠。
添加任務(wù)
1.如果你的任務(wù)是持久化的瞳腌,那么你一定要給job設(shè)置ID,并且在add_job()時使用replace_existing=True镜雨,否則在你每次應(yīng)用重啟的時候?qū)玫揭粋€新的job副本嫂侍。如果你設(shè)置了ID,卻沒有使用replace_existing=True ,那么會造成荚坞,當(dāng)添加重復(fù)ID的任務(wù)時挑宠,程序報錯。
2.如果想要立即啟動任務(wù)颓影,可以在add_job()時提交trigger參數(shù)
刪除任務(wù)
1.兩種刪除任務(wù)的方法中各淀,推薦根據(jù)id刪除。scheduler.remove_job('my_job_id')
暫停诡挂、重啟任務(wù)
1. 獲取job實(shí)例碎浇。使用pause()
2.?獲取job實(shí)例。使用resume()
想要在Flask中使用APScheduler璃俗,結(jié)果發(fā)現(xiàn)無法使用奴璃,查找了大量資料發(fā)現(xiàn)官方資料中已做出說明,
官方說Flask-APScheduler也許有用也許沒用城豁。也是很調(diào)皮了苟穆。
使用了一下,發(fā)現(xiàn)很好用,如果碰到多模塊鞭缭、使用數(shù)據(jù)庫問題剖膳,看這篇https://blog.csdn.net/arnolan/article/details/84936075
Flask-APScheduler 還直接提供API魏颓,只要在配置文件里面配置SCHEDULER_API_ENABLED =True 就行
API如下:
self._add_url_route('get_scheduler_info', '', api.get_scheduler_info, 'GET')
self._add_url_route('add_job', '/jobs', api.add_job, 'POST')
self._add_url_route('get_job', '/jobs/<job_id>', api.get_job, 'GET')
self._add_url_route('get_jobs', '/jobs', api.get_jobs, 'GET')
self._add_url_route('delete_job', '/jobs/<job_id>', api.delete_job, 'DELETE')
self._add_url_route('update_job', '/jobs/<job_id>', api.update_job, 'PATCH')
self._add_url_route('pause_job', '/jobs/<job_id>/pause', api.pause_job, 'POST')
self._add_url_route('resume_job', '/jobs/<job_id>/resume', api.resume_job, 'POST')
self._add_url_route('run_job', '/jobs/<job_id>/run', api.run_job, 'POST')
需要加上默認(rèn)的前綴 /schedule岭辣,當(dāng)然修改也是可以的,配置文件里面配置SCHEDULER_API_PREFIX ='/your_path' 就行