APScheduler 选项

问题描述 投票:0回答:3

我正在尝试使用 Advace Python Scheduler 以编程方式安排一些作业,我的问题是在文档中仅提到如何使用“间隔”触发器类型进行安排,“cron”和“日期”又如何。有关于 APScheduler 调度选项的完整文档吗?

例如:

#!/usr/bin/env python

from time import sleep 
from apscheduler.scheduler import Scheduler

sched = Scheduler()
sched.start()        

# define the function that is to be executed
def my_job(text):
    print text

job = sched.add_job(my_job, 'interval', id='my_job', seconds=10, replace_existing=True, args=['job executed!!!!'])

while True:
        sleep(1)

我如何根据“日期”或“cron”进行安排

我正在使用最新的 APScheduler 版本 3.0.2

谢谢

python apscheduler
3个回答
31
投票
sched.add_job(my_job, trigger='cron', hour='22', minute='30')

表示每天 22:30 调用函数“my_job”一次。

APScheduler是个好东西,但是缺少文档,有点遗憾,可以阅读源码来了解更多。

还有更多提示给您:

  1. 使用*

    sched.add_job(my_job, trigger='cron', second='*') # trigger every second.
    
  2. 更多属性

    {'year': '*', 'month': 1, 'day': 1, 'week': '*', 'day_of_week': '*', 'hour': 0, 'minute': 0, 'second': 0}
    

在我看来,在大多数情况下,cron 作业可以替代 date 作业。


1
投票

基于

date

job = sched.add_date_job(my_job, '2013-08-05 23:47:05', ['text']) # or can pass datetime object.

例如

import datetime
from datetime import timedelta
>>>job = sched.add_date_job(my_job, datetime.datetime.now()+timedelta(seconds=10), ['text'])
'text' # after 10 seconds

基于

cron

>>>job = sched.add_cron_job(my_job, second='*/5',args=['text'])
'text' every 5 seconds

另一个例子

>>>job = sched.add_cron_job(my_job,day_of_week='mon-fri', hour=17,args=['text'])
"text"  #This job is run every weekday at 5pm

-1
投票

如果我想直接添加 cron 表达式 [ '*/2 * * * *' ],而不是逐一传递周、小时、分钟、秒等参数,该怎么办

有人帮忙吗?

© www.soinside.com 2019 - 2024. All rights reserved.