【python 定時任務排程】 用APScheduler排程框架完成python指令碼排程
阿新 • • 發佈:2018-12-20
# -*- coding: utf-8 -*-
def main_job1():
print('This job is run every 20 seconds.')
# -*- coding: utf-8 -*-
def main_job2():
print('This job is run every 1 minutes.')
# -*- coding: utf-8 -*-
def helloworld():
print('hello world!')
現在我需要按指定的時間去執行上面這些指令碼,如間隔3s執行test1.py ,間隔1分鐘執行test2.py
- APScheduler是一個Python定時任務框架,使用起來十分方便。提供了基於日期、固定時間間隔以及crontab型別的任務,並且可以持久化任務 - APScheduler是基於Quartz(java實現的一個開源作業排程框架)的一個Python定時任務框架,實現了Quartz的所有功能,使用起來十分方便
# -*- coding: utf-8 -*- # python排程模組 from apscheduler.schedulers.blocking import BlockingScheduler sched = BlockingScheduler() # 匯入要排程的指令碼執行主函式 from test1 import main_job1 from test2 import main_job2 from test3 import helloworld # 間隔3秒鐘執行一次 sched.add_job(main_job1,'interval', seconds=3) # 間隔1分鐘執行一次 sched.add_job(main_job2,'interval', minutes=1) #在指定的時間,只執行一次 sched.add_job(helloworld, 'date', run_date='2018-11-09 11:20:00') # # 採用cron的方式執行 sched.add_job(helloworld, 'cron', day_of_week='4', second='*/4') # 上面是通過add_job()來新增作業,另外還有一種方式是通過scheduled_job()修飾器來修飾函式。 @sched.scheduled_job('interval', seconds=3) def timed_job(): print('我愛你中國!') print('before the start funciton') #這裡的排程任務是獨立的一個執行緒 while True: sched.start()
執行效果:
before the start funciton hello world! This job is run every 3 seconds. 我愛你中國! This job is run every 3 seconds. 我愛你中國! hello world! This job is run every 3 seconds. 我愛你中國! hello world! This job is run every 3 seconds. 我愛你中國! hello world! This job is run every 3 seconds. 我愛你中國! This job is run every 3 seconds. 我愛你中國! hello world! This job is run every 3 seconds. 我愛你中國! hello world! This job is run every 3 seconds. 我愛你中國! hello world! hello world! This job is run every 3 seconds. 我愛你中國!