【问题标题】:Writing a Python script that runs everyday till a specified date编写一个每天运行到指定日期的 Python 脚本
【发布时间】:2015-08-23 18:16:44
【问题描述】:

我想每天在特定时间安排一项工作(运行 python 脚本),直到达到特定日期。 研究了很多 Pythonic 调度程序,我认为 APScheduler 是解决这个问题的好选择。 这是一个使用 APScheduler 启动作业并在指定日期后每两小时执行一次的示例 sn-p。

from datetime import datetime

from apscheduler.scheduler import Scheduler

# Start the scheduler
sched = Scheduler()
sched.start()

def job_function():
    print "Hello World"

# Schedule job_function to be called every two hours
sched.add_interval_job(job_function, hours=2)

# The same as before, but start after a certain time point
sched.add_interval_job(job_function, hours=2, start_date='2010-10-10 09:30')

如何达到同样的效果并有一个不应执行作业的上限日期? 任何围绕 APScheduler 内部和外部的建议都非常受欢迎。 提前致谢。

【问题讨论】:

  • 2010 年已经发生了
  • 我想说这可能会更好地由系统而不是 python 脚本来解决
  • 一个 cron 任务?如果脚本可以安排作业会更好,这样就需要更少的人工干预:) 有什么建议吗,@RyanHaining?
  • 编写一个调用函数的python脚本并不难,然后等待两个小时,然后检查日期(如果为时已晚则退出),然后再次调用该函数。我担心的是,如果不重新启动 python 脚本,您将无法更新 python 或任何正在使用的代码,您必须处理并从发生的任何异常中恢复,并且您仍然需要系统中的某些内容才能运行每次系统重新启动时的脚本。
  • 我肯定会为此使用 cron。您不必担心流程会持续运行。您不必监视它或其他任何东西。只需让 cron 每天运行一次您的脚本,并在最后一天,从 cron 中删除条目或重命名脚本,使其不再运行。

标签: python


【解决方案1】:

使用每两个小时执行一次脚本的 cron 作业(cron 是专门为这样的事情而制作的)。在您的脚本中,您只需查找系统日期并检查它是否小于您的给定日期。如果它更小,则执行脚本的其余部分,否则退出。

您还可以编写额外的代码,以便在脚本不再实际执行时收到通知。

【讨论】:

    【解决方案2】:

    我终于找到了间隔触发器can take an end_date

    您可以通过trigger='interval'pass arguments for the triggeradd_job

    sched.add_job(job_function, trigger='interval', hours=2, end_date='2016-10-10 09:30')
    

    我认为您可能使用的是旧版本的软件。

    【讨论】:

    • 是否可以命名作业并将其存储在某个位置,这样就不能在同一结束日期创建重复作业?
    • @Tania 我不知道。我从未使用过该软件,只是通过仔细搜索文档为您找到了这个答案。
    猜你喜欢
    • 2011-04-28
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2022-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多