APScheduler BackgoundScheduler开始停止工作

时间:2018-02-17 20:33:15

标签: apscheduler

我想定期(1分钟)开始工作监控,但仅在特定事件被触发且仅在一定时间内开始时。

我选择了BackgroundScheduler。我最初的想法是在需要时添加add_job然后在一段时间结束后删除remove_job,但似乎我的工作只执行一次。

我尝试使用暂停/恢复,但我不确定这种行为:当我恢复时,我需要重新开始一段时间(1分钟)。

这样做的正确方法是什么?

def main():
    global scheduler
...
    scheduler = BackgroundScheduler()
    scheduler.add_job(func_monitoring, 'interval', minutes=1, id='monitoring', replace_existing=True)
    scheduler.start()
    scheduler.pause_job('monitoring')
...
    my_stream = ...stream(handler)   # listen to live changes to data, if change, handler is called 


def func_monitoring():
    ...

    if <specific condition> :
        #scheduler.remove_job('monitoring')
        scheduler.pause_job('monitoring')

    ...
    else:
       <my monitoring code>



def handler(message):
    if <specific message received>: 
       #scheduler.add_job(func_monitoring, 'interval', minutes=1, id='monitoring', replace_existing=True)
       scheduler.resume_job('monitoring')

1 个答案:

答案 0 :(得分:0)

您最好的选择可能是继承IntervalTrigger,并将其设置为不应用初始延迟。最初的延迟只是由于历史原因。