使用APScheduler3.0.1 实现定时任务的方法
需求是在某一指定的时刻执行操作
网上的建议多为通过调用Scheduler的add_date_job实现
不过APScheduler3.0.1与之前差异较大,无法通过上述方法实现
参考https://apscheduler.readthedocs.org/en/latest/userguide.htmlAPScheduler3.0.1的userguide解决问题
fromdatetimeimportdatetime importtime importos fromapscheduler.schedulers.backgroundimportBackgroundScheduler deftick(): print('Tick!Thetimeis:%s'%datetime.now()) if__name__=='__main__': scheduler=BackgroundScheduler() scheduler.add_job(tick,'interval',seconds=3) scheduler.start() print('PressCtrl+{0}toexit'.format('Break'ifos.name=='nt'else'C')) try: #Thisisheretosimulateapplicationactivity(whichkeepsthemainthreadalive). whileTrue: time.sleep(2) except(KeyboardInterrupt,SystemExit): scheduler.shutdown()#Notstrictlynecessaryifdaemonicmodeisenabledbutshouldbedoneifpossible
实例的代码实现每3秒执行一次tick方法,虽然与需求不符,但发现add_interval_job在APScheduler3.0.1中已经被
scheduler.add_job(tick,'interval',seconds=3)
取代。
help(scheduler.add_job)得到
add_job(func,trigger=None,args=None,kwargs=None,id=None,name=None,misfire_grace_time=undefined,coalesce=undefined,max_instances=undefined,next_run_time=undefined,jobstore='default',executor='default',replace_existing=False,**trigger_args) Addsthegivenjobtothejoblistandwakesuptheschedulerifit'salreadyrunning. Anyoptionthatdefaultstoundefinedwillbereplacedwiththecorrespondingdefaultvaluewhenthejobisscheduled(whichhappenswhentheschedulerisstarted,orimmediatelyiftheschedulerisalreadyrunning). Thefuncargumentcanbegiveneitherasacallableobjectoratextualreferenceinthepackage.module:some.objectformat,wherethefirsthalf(separatedby:)isanimportablemoduleandthesecondhalfisareferencetothecallableobject,relativetothemodule. Thetriggerargumentcaneitherbe: thealiasnameofthetrigger(e.g.date,intervalorcron),inwhichcaseanyextrakeywordargumentstothismethodarepassedontothetrigger'sconstructor aninstanceofatriggerclass
由此可知,第参数为trigger,可取值为date、interval、cron,**trigger_args为该trigger的构造函数。
通过源码找到DateTrigger的构造函数
def__init__(self,run_date=None,timezone=None)
所以,只需将指定的时间传入add_job
scheduler.add_job(tick,'date',run_date='2014-11-1114:48:00')
以上这篇使用APScheduler3.0.1实现定时任务的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。