【问题标题】:Scheduled tasks in Win32Win32 中的计划任务
【发布时间】:2010-12-08 02:37:05
【问题描述】:

我在 WinXP SP2 机器上有一个计划任务,该任务设置为运行 python 脚本:

每日

开始时间: 12:03 AM

每天安排任务:每 1 天

开始日期:过去的某个时间

重复任务:每 5 分钟

直到:持续时间 24 小时

基本上,我希望脚本永远每五分钟运行一次。
我的问题是任务在每晚 23:47 之后的某个时间(大概在 23:55 之后)运行,之后不再运行。我究竟做错了什么?或者,除了使用 Windows 计划任务之外,您还可以建议其他方法吗?

【问题讨论】:

  • 所以它在第一天每 5 分钟运行一次,但在第 2 天它会因某种原因停止?
  • 没错。它只运行一天。
  • 任务调度程序不适用于关键作业。请参阅下面我介绍哈德森的评论......这就是你所需要的。

标签: python windows-xp scheduled-tasks


【解决方案1】:

您可以从另一个脚本安排它,并在每天或每次重新启动后启动它:

#!/usr/bin/env python

import subprocess

interval = 300  # secs

while True:
    p = subprocess.Popen(['pythonw.exe', 'foo.py'])
    time.sleep(interval)

这样你也可以做亚分钟间隔。

【讨论】:

  • 为什么要使用 subprocess 而不是 os.popen?
  • 因为 os.popen 已被弃用。见docs.python.org/library/subprocess.html
  • 感谢 corey,我正在使用您的解决方案(我在启动时运行)来运行我的脚本并且它是可靠的(到目前为止)。
【解决方案2】:

在第一个窗格(标记为“任务”)上,您是否未选中“仅在登录时运行”和“启用(计划任务在指定时间运行”)?

我已经通过 Windows 计划任务运行 python 作业,其设置与您显示的非常相似。

【讨论】:

  • 是的。未选中“仅在登录时运行”并选中“启用”。
【解决方案3】:

此外,在过去一年左右的时间里,我发现了一个常见错误,即如果以下复选框处于选中状态,则 Server 2003 或 XP 上的计划任务不会运行:

  • “如果计算机使用电池运行,请不要启动任务”
  • “如果电池模式开始,则停止任务”

如果您有电池(例如在笔记本电脑上)或 UPS(在服务器上),无论您的公用电源是否正常工作,Windows 似乎都会感到有些困惑。

此外,如果您经常运行它,我通常会缩短时间或取消选中“如果任务运行 X 分钟则停止”选项。

【讨论】:

  • 这两个和“停止任务”都未选中。 “减少时间”是什么意思?将持续时间设置为少于 24 小时?
  • 是的。或者,更好的是,5 分钟或更短。想一想:如果脚本出现故障并且在下一个实例之前的 5 分钟内没有关闭,那么在一天的过程中,您可能会运行 480 个单独的 Python 进程,并且任务计划程序服务必须跟踪所有他们知道什么时候杀死他们。
【解决方案4】:

据我所知,计划任务很糟糕。您应该使用具有更好控制力的东西,例如

http://cronw.sourceforge.net/ 或任何其他适用于 Windows 的 cron 实现。

【讨论】:

    【解决方案5】:

    直到:持续时间 24 小时

    这会在第一天结束时将其关闭。

    删除它,看看它是否继续。它应该,并且您不需要在此过程中安装 Python。 :)

    【讨论】:

      【解决方案6】:

      冒着无法回答您的问题的风险,我是否可以建议如果您必须运行的内容很重要甚至至关重要,那么 Windows 任务调度程序不是运行它的方式。

      使用任务调度器时有很多糟糕的流程。让我们从显而易见的开始:

      没有日志记录。没有办法调查出现问题时会发生什么。无法跨 PC 分配工作。没有容错性。它只是Windows,界面很糟糕。

      如果上述任何一项对您来说是个问题,您需要一些更复杂的东西。我的建议是你试试 Hudson,也就是 Sun 的持续集成服务器。

      除了上述所有功能之外,它还可以执行 cron 样式的调度,并自动过期日志。它可以设置为 jabber 或失败时发送电子邮件,如果你可以让它产生一些 XML 输出,你甚至可以让它自动诊断你的流程出了什么问题。

      请不要使用 Windows 计划任务。有很多更好的东西可以使用,当我说我从不后悔放弃内置调度程序时,我是根据经验说话的。

      【讨论】:

        【解决方案7】:

        您运行的是哪个版本的 Windows?

        您是否检查了“设置”选项卡以确保取消选择所有选项?

        您也可以考虑使用功能更丰富的调度程序,例如 System Scheduler from Splinterware Software

        【讨论】:

        • 好的。选择“唤醒计算机以运行此任务”并选择“运行 72 小时”。我取消了它们。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-10
        • 2021-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        相关资源
        最近更新 更多