【问题标题】:Python Scheduler - Adjust time interval on-the-flyPython Scheduler - 即时调整时间间隔
【发布时间】:2021-10-10 01:02:21
【问题描述】:

我正在使用Python Advanced Scheduler 库,我希望即时更改时间间隔,但这似乎不适用于我的实现。我正在做的是根据当前的model_retrain_freq Manager 成员值设置时间间隔,然后使用公共设置器在以后更改该时间间隔。以后的时间永远不会被拾起。建议?请参考以下内容:

运行.py

from apscheduler.schedulers.background import BackgroundScheduler
import atexit

from app.main.manager import Manager

manager = Manager()

sched = BackgroundScheduler(daemon=True)
sched.add_job(
    manager.model_expiry_callback,
    "interval",
    seconds=manager.model_retrain_freq,
)
sched.start()
atexit.register(lambda: sched.shutdown(wait=False))

# testing
import time

time.sleep(10)
manager.model_retrain_freq = 1

time.sleep(9000)

manager.py

class Manager:
 def __init__(self):
        self._model_retrain_freq = 5

@property
def model_retrain_freq(self):
    """Get model retrain frequency"""
    return self._model_retrain_freq

@model_retrain_freq.setter
def model_retrain_freq(self, value):
    """Set model retrain frequency"""
    self._model_retrain_freq = value

【问题讨论】:

    标签: python scheduled-tasks


    【解决方案1】:

    更改_model_retrain_freq 的值不会影响已创建的作业。更改_model_retrain_freq后需要重新安排工作。

    存储创建的作业。

    job = sched.add_job(
        manager.model_expiry_callback,
        "interval",
        seconds=manager.model_retrain_freq,
    )
    

    更改_model_retrain_freq的值后需要重新调度时:

    job.reschedule(trigger="interval", seconds=manager.model_retrain_freq)
    

    【讨论】:

    • 明白。感谢您的回复和您给出的解决方案。
    猜你喜欢
    • 2014-03-04
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2022-01-20
    • 1970-01-01
    • 2011-11-13
    相关资源
    最近更新 更多