APScheduler 增加作業 add_job


1、add_job() 

該方式返回一個aoscheduler.job,Job,可用於以后修改或刪除作業。 

 

2、scheduled_job() 

 該方法方便什么在應用程序運行時不更改的作業。 

 

2、調度安排工作的時候,如果在添加作業時調度程序尚未運行,則將暫停調度作業,並且僅在調度程序啟動時,才計算其首次運行時間。 

 

3、注意:如果使用序列化執行程序或者作業存儲,則會對作業增加要求 

目標對象必須全局可訪問 

可調用對象任何參數可序列化 

在內置的作業存儲中,只有MemoryJobStore不會序列化作業。在內置執行程序中,只有ProcessPoolExecutor將序列化作業。 

 

 

如果在應用程序初始化期間在持久性作業存儲安排作業,則必須為該作業定義一個明確ID並使用,replace_existing=True 否則應用程序啟動時,你將獲得作業該作業新副本! 

replace_existing=True 

程序中斷后重新運行時會自動從數據庫讀取作業信息,而不需要重新再添加到調度器中,如果不注釋 21-25 行添加作業的代碼,則作業會重新添加到數據庫中,這樣就有了兩個同樣的作業,避免出現這種情況可以在 add_job 的參數中增加 replace_existing=True,如 

 

在程序中添加add_job 設置id 那么 沒有replace_existing=True 

1、會報錯,id重復,如果加了重復id 會被過濾不會報錯。 

apscheduler.jobstores.base.ConflictingIdError: 'Job identifier (1234567) conflicts with an existing job' 
 

socketio_server.py 
uwsgl.lm 
uwsgi.log 
uwsgi.pid 
% Scratches and Consoles 
main (1) 
Run: 
•t Traceback (most recent call last): 
defaults.rnax instances' 
tirnezone 
. do something else here, maybe add jobs etc. 
job 
— sched 
sched.start() 
run 3, 24, 10, 
'date', 
run 3, 
13, 
24, 
11, 22, 
5), 
1234567' 1234567") 
Termi I 
File "/home/tang/Desktop/qxym/qxym/apps/apsChenduler/main . py", 
line 66, in <module> 
sched.start() 
File "/h0T,e/tang/ virtualenvs/qxym/lib/python3 6/site-packages/apscheduler/schedulers/blocking py" , 
line 18, in start 
super(810ckingScheduler, self) .start(•args, ••kwargs) 
File "/home/tang/ virtualenvs/qxyT,/lib/python3 6/site-packages/apscheduler/schedulers/base. py" , 
line 162, 
self ._real add job(job, jobstore_alias, replace_existing) 
File "/h0T,e/tang/ virtualenvs/qxym/lib/python3 6/site-packages/apscheduler/schedulers/base. py" , 
line 867, 
store.add '0b) 
Fl e I'/ ore/tang/ . virtua envs/qxym/ 1 /pyt on3.6/s1te-pac ages/apsc e u er/J0 stores/sq a c emy.py", 
Ine 
raise ConflictingldError(job.id) 
apscheduler.jobstores .base.ConflictingIdError: 'Job identifier (1234567) conflicts with an existing job' 
Process finished with exit code 1 
in start 
real add job 
100, 
O IDE and plugin Updates 
pycharm is ready to update. 
Window 
4: Run i 5: Debug 
5: TODO p 9: version control 
Database Changes 
Terminal 
python Console

2、會導致原來的存儲作業被刷新,重新執行。有可能會導致多次執行。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM