首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过APSCHEDULER调度python中的cron作业以在每天上午10点运行python脚本

通过APSCHEDULER调度python中的cron作业以在每天上午10点运行python脚本
EN

Stack Overflow用户
提问于 2019-02-18 05:00:55
回答 2查看 5.6K关注 0票数 4

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

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

我已经使用apscheduler安排了一个间隔作业,让它每隔10分钟执行一次python脚本,并且运行成功,但是cron作业是我的难点所在。

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

代码语言:javascript
运行
复制
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分钟成功运行一次-

代码语言:javascript
运行
复制
def interval_process():
     print ("print every 10 minutes")

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

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

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

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-19 07:44:05

您的代码的一个稍微修改的版本正在为我工作(我调整了cron条目,这样我就不需要等待一周就能看到结果,并且我使函数名参数匹配):

代码语言:javascript
运行
复制
#!/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()
票数 5
EN

Stack Overflow用户

发布于 2020-10-09 04:21:58

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

安装/要求:

代码语言:javascript
运行
复制
pip install APScheduler

示例:

代码语言:javascript
运行
复制
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()

输出:

代码语言:javascript
运行
复制
[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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54737637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档