2

我正在尝试做的基本概念:

我希望它检查它是否是下午 2 点到 5 点和周日 {每 {2 小时},如果为真,它应该继续到脚本的底部(通过电子邮件向我发送我的服务器状态)并在 36 小时内重置计时器/它是活动搜索看看是不是星期天下午 2 点到 5 点

我已经看到了几种不同的计时器方法,但我找不到一种主动扫描以查看它是否是指定时间的方法(在这种情况下,如果它每隔 2 次检查是否是周日下午 2 点到 5 点,那将是理想的小时)

任何帮助将不胜感激,詹姆斯

编辑:在我重新发布后立即输出信息,只需添加时间模块大声笑:P

脚本到目前为止,我还没有实现 .py 启动部分,但是当我确定要更新帖子时,我会更新帖子。

import datetime
import croniter
import crontab
import time

c = croniter.croniter("0 20,21,22 * * SUN")
next_due_date = c.get_next(datetime.datetime)

print c.get_next(datetime.datetime)

while True:
    now = datetime.datetime.now()
    if now > next_due_date:
        do_something()
        time.sleep(60 * 60 * 36)
    else:
        time.sleep(60 * 60 * 2)

Edit2:我尝试添加文件路径:导致 keyerror

import datetime
import croniter
import crontab
import time

c = croniter.croniter("0 20,21,22 * * SUN ./line.py")
next_due_date = c.get_next(datetime.datetime)

print c.get_next(datetime.datetime)

while True:
    now = datetime.datetime.now()
    if now > next_due_date:
        do_something()
        time.sleep(60 * 60 * 36)
    else:
        time.sleep(60 * 60 * 2)
4

1 回答 1

1

我不确定您想做什么,但是,据我了解,似乎使用 cron 任务就足够了。

您想在周日下午 2 点开始您的脚本吗?如果是,那么像这样的 crontab 可以:0 14 * * SUN ./my_script.py

如果您想查看下一个星期日下午 2 点到 5 点是什么时候,您可以使用该croniter模块解决一些问题。这是一个例子:

c = croniter.croniter("0 14,15,16 * * SUN")
print c.get_next(datetime.datetime) # will output 2013-08-04 14:00:00

知道下一个星期日下午 2 点的时间后,您可以编写如下循环:

c = croniter.croniter("0 14 * * SUN")
while True:
    now = datetime.datetime.now()
    if now > next_due_date:
        do_something()
        next_due_date = c.get_next(datetime.datetime)
        time.sleep(60 * 60 * 36)
    else:
      time.sleep(60 * 60 * 2) # sleep 2 hours
于 2013-07-29T07:42:25.877 回答