import threading
from olc.config.properties_loader import OlcConfigManager
from olc.limit.limit_factory import OlcRateLimiterFactory
from olc.task_schedule.task_schedule import Task, OlcScheduleManager
def refresh_local_dyna_rate():
limiters = OlcRateLimiterFactory.get_instance().get_dyna_limiters()
if len(limiters) == 0:
return
for limiter in limiters:
limiter.refresh_rate_limiter()
class AlgUpdate(Task):
def run(self):
refresh_local_dyna_rate()
class OlcAlgRefreshManager:
_lock = threading.Lock()
_instance = None
@classmethod
def get_instance(cls):
if cls._instance is None:
with cls._lock:
if cls._instance is None:
cls._instance = cls()
return cls._instance
@staticmethod
def start():
if OlcConfigManager.get_instance().get_sdk_config().dynamic_switch:
alg_task = AlgUpdate()
OlcScheduleManager.get_instance().create_task(
name="dynamic_refresh",
task=alg_task,
interval=1,
pool_name="olc-dynamic-pool",
max_worker=1,
)
OlcScheduleManager.get_instance().start_task(name="dynamic_refresh")