每天上午 10 点通过 APSCHEDULER 将 python 中的 cron 作业安排到 运行 一个 python 脚本

Scheduling a cron job in python to run a python script every day at 10 am through APSCHEDULER

我想在 python 中安排一个 cron 作业,每天上午 10 点 运行 是一个 python 脚本。我正在使用 apscheduler 来实现这个功能。

我正在尝试使用 apscheduler 功能来安排每天上午 10 点 运行 的 cron 作业并执行 python 脚本。但是作业没有在规定的时间执行。

我已经使用 apscheduler 安排了一个间隔作业来每 10 分钟执行一个 python 脚本并且它 运行 成功,但是 cron 作业是我挣扎的地方。

计划在今天 运行 下午 2 点进行的 cron 作业的示例代码 -

from apscheduler.schedulers.blocking import BlockingScheduler

def cron_process():
    print ("periodic print")

scheduler = BlockingScheduler()
scheduler.add_job(process, 'cron', day_of_week = 'sun', hour=14)
scheduler.start()

间隔作业的示例代码,在启动时每 10 分钟成功 运行ning -

def interval_process():
     print ("print every 10 minutes")

scheduler = BlockingScheduler()
scheduler.add_job(process, 'interval', minutes=10)
scheduler.start()

预期结果是 cron 作业在定义的时间在间隔作业的同一行上执行。

请告知我哪里出错了或者我在代码中还遗漏了什么。

谢谢。

你的代码稍微修改后的版本对我有用(我调整了 cron 条目,这样我就不用等一个星期就能看到结果,而且我使函数名称参数匹配):

#!/usr/bin/env python3
from apscheduler.schedulers.blocking import BlockingScheduler

def cron_process():
    print ('periodic print')

scheduler = BlockingScheduler()
scheduler.add_job(cron_process, 'cron', day_of_week = 'mon', hour='*', minute='*')
scheduler.start()

带有记录器的官方示例:更多信息,您可以查看official document。当前版本:APScheduler==3.6.3

install/requirement:

pip install APScheduler

示例:

from apscheduler.schedulers.blocking import BlockingScheduler
import logging
import sys

logger = logging.getLogger('')
logger.setLevel(logging.DEBUG)
sh = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter('[%(asctime)s] %(levelname)s [%(filename)s.%(funcName)s:%(lineno)d] %(message)s', datefmt='%a, %d %b %Y %H:%M:%S')
sh.setFormatter(formatter)
logger.addHandler(sh)


def job_function():
    print("Hello World")

sched = BlockingScheduler()

# Schedules job_function to be run on the third Friday
# of June, July, August, November and December at 00:00, 01:00, 02:00 and 03:00
sched.add_job(job_function, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')

sched.start()

输出:

[Thu, 08 Oct 2020 22:09:41] INFO [base.py.add_job:440] Adding job tentatively -- it will be properly scheduled when the scheduler starts
[Thu, 08 Oct 2020 22:09:41] INFO [base.py._real_add_job:881] Added job "job_function" to job store "default"
[Thu, 08 Oct 2020 22:09:41] INFO [base.py.start:166] Scheduler started
[Thu, 08 Oct 2020 22:09:41] DEBUG [base.py._process_jobs:940] Looking for jobs to run
[Thu, 08 Oct 2020 22:09:41] DEBUG [base.py._process_jobs:1019] Next wakeup is due at 2020-11-20 00:00:00+01:00 (in 3639018.401552 seconds)