我想定期(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')
答案 0 :(得分:0)
您最好的选择可能是继承IntervalTrigger
,并将其设置为不应用初始延迟。最初的延迟只是由于历史原因。