【python 定时任务调度】 用APScheduler调度框架完成python脚本调度

先写三个脚本:
test1.py:

# -*- coding: utf-8 -*-


def main_job1():
    print('This job is run every 20 seconds.')

test2.py:

# -*- coding: utf-8 -*-

def main_job2():
    print('This job is run every 1 minutes.')

test3.py:

# -*- 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.
我爱你中国!

你可能感兴趣的:(数据科学--python)