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