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

Python脚本计划在每月第1天凌晨2:00运行,python,python-2.7,scheduling,Python,Python 2.7,Scheduling,我有一个脚本,每30分钟运行一次,但有一个部分我只想在本月的第一天凌晨2:00运行。我正在使用Python中的schedule,我不知道如何将它设置为每月的第一天 from datetime import date from safe_schedule import SafeScheduler def job2(): if date.today().day != 1: return # actual job body scheduler = SafeS

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

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)
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()

编辑:
他们在项目的许多问题中提到了这一点,但似乎还没有一个干净的解决方案。此外,整个项目似乎不再处于活动状态,因此我认为该功能不会很快实现

在我看来,要做到这一点,您需要手动检查当前日期是否是您工作中每月的第一天

原始答案(错误):

我查看了文档,您是对的,没有提到月份:

但项目中有一个问题提到:

您可以这样做:

scheduler.every().day.if(lambda d,t: d.day == 1 and t.hour == 2).do(x)

该库的主要贡献者不鼓励这种事情,请参阅

然而,如果你坚持的话,你可以安排每天的工作,但是只有在每月的第一天才能运行它

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)

另一种选择是在一个问题的评论中描述的。

我在这里没有看到任何关于Windows任务调度程序的提及,但是如果您在Windows上,这肯定对您有用


不,你不能这样做。询问
是否存在if()方法来执行此操作?
哦,是的,您是对的。。。而且这个库似乎不再被维护了,所以我不认为它会很快成为一个功能…我要做的事情要复杂得多!玩得好:-)这太完美了!