您好,登錄后才能下訂單哦!
這期內(nèi)容當中小編將會給大家?guī)碛嘘Ppython中怎么使用apscheduler實現(xiàn)定時任務,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一看就會的超詳細教程:SpringBoot整合MybatisPlus!>>>
$ pip install apscheduler
2、源碼安裝(https://pypi.python.org/pypi/APScheduler/)
$ python setup.py install
APScheduler有四種組成部分:
觸發(fā)器(trigger)包含調(diào)度邏輯,每一個作業(yè)有它自己的觸發(fā)器,用于決定接下來哪一個作業(yè)會運行。除了他們自己初始配置意外,觸發(fā)器完全是無狀態(tài)的。
作業(yè)存儲(job store)存儲被調(diào)度的作業(yè),默認的作業(yè)存儲是簡單地把作業(yè)保存在內(nèi)存中,其他的作業(yè)存儲是將作業(yè)保存在數(shù)據(jù)庫中。一個作業(yè)的數(shù)據(jù)講在保存在持久化作業(yè)存儲時被序列化,并在加載時被反序列化。調(diào)度器不能分享同一個作業(yè)存儲。
執(zhí)行器(executor)處理作業(yè)的運行,他們通常通過在作業(yè)中提交制定的可調(diào)用對象到一個線程或者進城池來進行。當作業(yè)完成時,執(zhí)行器將會通知調(diào)度器。
調(diào)度器(scheduler)是其他的組成部分。你通常在應用只有一個調(diào)度器,應用的開發(fā)者通常不會直接處理作業(yè)存儲、調(diào)度器和觸發(fā)器,相反,調(diào)度器提供了處理這些的合適的接口。配置作業(yè)存儲和執(zhí)行器可以在調(diào)度器中完成,例如添加、修改和移除作業(yè)。
簡單應用:
import time from apscheduler.schedulers.blocking import BlockingScheduler def my_job(): print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) sched = BlockingScheduler() sched.add_job(my_job, 'interval', seconds=5) sched.start()
上面的例子表示每隔5s執(zhí)行一次my_job函數(shù),輸出當前時間信息
操作作業(yè)
1.添加作業(yè)
上面是通過add_job()來添加作業(yè),另外還有一種方式是通過scheduled_job()修飾器來修飾函數(shù)
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴, 互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import time from apscheduler.schedulers.blocking import BlockingScheduler sched = BlockingScheduler() @sched.scheduled_job('interval', seconds=5) def my_job(): print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) sched.start()
2.移除作業(yè)
job = scheduler.add_job(myfunc, 'interval', minutes=2) job.remove() #如果有多個任務序列的話可以給每個任務設置ID號,可以根據(jù)ID號選擇清除對象,且remove放到start前才有效 sched.add_job(myfunc, 'interval', minutes=2, id='my_job_id') sched.remove_job('my_job_id')
3.暫停和恢復作業(yè)
暫停作業(yè):
apsched.job.Job.pause() apsched.schedulers.base.BaseScheduler.pause_job()
恢復作業(yè):
apsched.job.Job.resume() apsched.schedulers.base.BaseScheduler.resume_job()
4.獲得job列表
獲得調(diào)度作業(yè)的列表,可以使用get_jobs()來完成,它會返回所有的job實例?;蛘呤褂胮rint_jobs()來輸出所有格式化的作業(yè)列表。也可以利用get_job(任務ID)獲取指定任務的作業(yè)列表
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴, 互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' job = sched.add_job(my_job, 'interval', seconds=2 ,id='123') print sched.get_job(job_id='123') print sched.get_jobs()
5.關閉調(diào)度器
默認情況下調(diào)度器會等待所有正在運行的作業(yè)完成后,關閉所有的調(diào)度器和作業(yè)存儲。如果你不想等待,可以將wait選項設置為False。
sched.shutdown() sched.shutdown(wait=False)
作業(yè)運行的控制(trigger)
add_job的第二個參數(shù)是trigger,它管理著作業(yè)的調(diào)度方式。它可以為date, interval或者cron。對于不同的trigger,對應的參數(shù)也相同。
(1). cron定時調(diào)度(某一定時時刻執(zhí)行)
(int|str) 表示參數(shù)既可以是int類型,也可以是str類型 (datetime | str) 表示參數(shù)既可以是datetime類型,也可以是str類型 year (int|str) – 4-digit year -(表示四位數(shù)的年份,如2008年) month (int|str) – month (1-12) -(表示取值范圍為1-12月) day (int|str) – day of the (1-31) -(表示取值范圍為1-31日) week (int|str) – ISO week (1-53) -(格里歷2006年12月31日可以寫成2006年-W52-7(擴展形式)或2006W527(緊湊形式)) day_of_week (int|str) – number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun) - (表示一周中的第幾天,既可以用0-6表示也可以用其英語縮寫表示) hour (int|str) – hour (0-23) - (表示取值范圍為0-23時) minute (int|str) – minute (0-59) - (表示取值范圍為0-59分) second (int|str) – second (0-59) - (表示取值范圍為0-59秒) start_date (datetime|str) – earliest possible date/time to trigger on (inclusive) - (表示開始時間) end_date (datetime|str) – latest possible date/time to trigger on (inclusive) - (表示結束時間) timezone (datetime.tzinfo|str) – time zone to use for the date/time calculations (defaults to scheduler timezone) -(表示時區(qū)取值)
上述就是小編為大家分享的python中怎么使用apscheduler實現(xiàn)定時任務了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。