1. 程式人生 > >【python 定時任務排程】 用APScheduler排程框架完成python指令碼排程

【python 定時任務排程】 用APScheduler排程框架完成python指令碼排程

# -*- 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

,型別這種定時任務,我們可以教給linux 自帶的crontab去完成,但顯得不是那麼專業,python 有自己強大的排程框架,也能完成這件事。

- 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.
我愛你中國!