Python 脚本计划在每个月的第 1 天凌晨 2:00 运行

Kev*_*vin 3 python scheduling python-2.7

我有一个每 30 分钟运行一次的脚本,但有一个部分我只想在每月第一天的凌晨 2:00 运行。我schedule在 Python 中使用,但我不知道如何为该月的第 1 天设置它。

month似乎没有在定义的参数中schedule做类似的事情schedule.every().month.at("02:00").do(job2)

有什么建议?我正在使用 python 2.7

简化代码:

from safe_schedule import SafeScheduler
import time

def job():
    print "I'm working...",
    return

def scheduler():
    # Schedule every30min routines
    print 'Starting Scheduler'
    scheduler = SafeScheduler()
    scheduler.every(30).minutes.do(job)
    #scheduler.every().month.at("02:00").do(job2)

    while True:
        scheduler.run_pending()
        time.sleep(1)


if __name__ == '__main__':
     scheduler()
Run Code Online (Sandbox Code Playgroud)

Duš*_*ďar 6

该库的主要贡献者不鼓励这种事情,请参阅https://github.com/dbader/schedule/issues/73#issuecomment-167758653

然而,如果你坚持,你可以安排每天的工作,但只有在当月的 1 号时才运行它。

from datetime import date

from safe_schedule import SafeScheduler


def job2():
    if date.today().day != 1:
        return

    # actual job body


scheduler = SafeScheduler()
scheduler.every().day.at("02:00").do(job2)
Run Code Online (Sandbox Code Playgroud)

在其中一个问题评论https://github.com/dbader/schedule/issues/73#issuecomment-356769023 中描述了另一种选择。