【问题标题】:python script advanced schedulingpython脚本高级调度
【发布时间】:2013-02-15 14:13:39
【问题描述】:

我正在尝试做一些非常复杂的事情。使用 Windows 框,我试图让脚本每半小时运行一次,周一至周五,上午 9:00 至下午 7:00,跳过我定义为“假期”的某些日期。我希望 Python 自己运行这个脚本。我已经查看了“apschedule”,但似乎找不到我需要执行此操作的正确选项。如果无法通过 Python 做到这一点,我可以查看哪些其他解决方案?

顺便说一句,截至目前,我正在运行 Python 3.3,但如有必要,我愿意降级。

【问题讨论】:

    标签: python python-2.7 python-3.x scheduled-tasks apscheduler


    【解决方案1】:

    装饰您的工作职能以跳过特殊日子:

    from datetime import date
    
    def not_on(dates):
        def noop(): pass
        def decor(fn):
            if date.today() in dates:
                return noop
            else:
                return fn
        return decor
    
    
    @not_on( ( date(2013, 03, 01), ) )
    def job():
        print "yeah"
    

    然后将您的工作安排在常规日期并完成。如果在特殊的日子调用作业,装饰器将跳过执行。

    继续使用apscheduler

    【讨论】:

    • 我可以使用相同的脚本让它只在工作时间运行吗?
    • 当然,用第二个装饰器装饰它:@business_hours 看起来不错。您可以将它们堆叠在一起。
    • 此处的日期检查在导入时运行,而不是在计划作业时运行。如果您使用的是 APScheduler,您很可能有一个长时间运行的进程调度作业,而这是行不通的
    猜你喜欢
    • 2015-09-27
    • 2018-09-26
    • 1970-01-01
    • 2011-12-20
    • 2012-06-10
    • 1970-01-01
    • 2015-05-13
    • 2011-03-16
    • 2010-12-17
    相关资源
    最近更新 更多