暂停 threading.Timer 1 小时

pause threading.Timer for 1hr

我正在做的是检查网站上的新内容。 threading.Timer 每 50 秒检查一次新内容。如果找到新内容,我希望它暂停该功能 1 小时。

def examplebdc ():
threading.Timer(50.00, examplebdc).start ();
#content id
wordv = 'asdfsdfm'

if any("m" in s for s in wordv):
    print("new post")
    #pause this threading.Timer (or function) for 1hr. 
examplebdc();

最简单的方法可能是在您知道在再次调用您的函数之前要等待多长时间之前不要重新启动计时器:

def examplebdc():
    wordv = 'asdfsdfm'

    if any("m" in s for s in wordv):
        print("new post")
        threading.Timer(60*60, examplebdc).start()
    else:
        threading.Timer(50, examplebdc).start()

examplebdc()

如果由于某种原因无法做到这一点,您可以更改创建和启动计时器的方式,以便稍后参考并取消它:

def examplebdc():
    # lets assume we need to set up the 50 second timer immediately
    timer = threading.Timer(50, examplebdc)   # save a reference to the Timer object
    timer.start()                             # start it with a separate statement

    wordv = 'asdfsdfm'

    if any("m" in s for s in wordv):
        print("new post")
        timer.cancel()                        # cancel the previous timer
        threading.Timer(60*60, examplebdc).start()   # maybe save this timer too?

examplebdc()

在你的单一函数中这很容易,你可以只使用一个变量。如果您的计时器在其他地方启动,您可能需要使用一个或多个 global 语句或其他一些更复杂的逻辑来传递计时器引用。