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、会导致原来的存储作业被刷新,重新执行。有可能会导致多次执行。 

posted @ 2021-12-13 20:24  Xingtxx  阅读(2899)  评论(0编辑  收藏  举报