关于调度程序:如何在python中安排定时事件

how to schedule a timed event in python

我想在python中安排一个重复的定时事件,如下所示:
"在时间X发射功能Y(在一个单独的线程中)并每小时重复一次"

"X"是固定时间戳

代码应该是跨平台的,所以我想避免使用像"cron"这样的外部程序来执行此操作。

代码提取:

1
2
3
4
5
6
7
8
9
10
    import threading
    threading.Timer(10*60, mail.check_mail).start()
    #... SET UP TIMED EVENTS HERE
    while(1):
        print("please enter command")
        try:
            command = raw_input()
        except:
            continue
        handle_command(command)


为您的计划创建dateutil.rrulerr,然后在您的线程中使用这样的循环:

1
2
3
4
5
for ts in rr:
    now = datetime.now()
    if ts < now:
        time.sleep((now - ts).total_seconds())
    # do stuff

或者是一个更好的解决方案,可以解决时钟变化:

1
2
3
4
5
6
7
8
ts = next(rr)
while True:
    now = datetime.now()
    if ts < now:
        time.sleep((now - ts).total_seconds() / 2)
        continue
    # do stuff
    ts = next(rr)