APScheduler选项

13
我正在尝试使用Advance Python Scheduler程序化地安排一些作业,我的问题是在文档中只提到了如何使用“interval”触发器类型进行调度,那“cron”和“date”类型呢?有没有关于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。

谢谢

2个回答

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.
  • 更多属性

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

    我认为在大多数情况下,cron job 可以替代 date jobs。


    飞驰,谢谢!是的,最终我开始阅读源代码并找到了解决方法。 - tbo
    15
    文档不足?对不起,什么?http://apscheduler.readthedocs.org/en/latest/modules/triggers/cron.html#module-apscheduler.triggers.cron,http://apscheduler.readthedocs.org/en/latest/modules/triggers/date.html#module-apscheduler.triggers.date和http://apscheduler.readthedocs.org/en/latest/modules/triggers/interval.html#module-apscheduler.triggers.interval - Alex Grönholm

    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
    

    基于的。
    >>>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
    

    4
    最新版本的调度程序已经不再适用。 - tbo

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接