49 lines
1.4 KiB
Python
Raw Normal View History

2025-09-25 10:52:52 +08:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
VWED.timer 模块 - 定时任务
"""
from typing import Callable
from ..script_registry_service import get_global_registry
class VWEDTimerModule:
"""VWED.timer 模块 - 定时任务"""
def __init__(self, script_id: str):
self.script_id = script_id
self.registry = get_global_registry()
def interval(self, seconds: int, handler: Callable, repeat: bool = True, delay: int = 0):
"""注册定时任务
分离式模式
VWED.timer.interval(
seconds=60,
handler=system_monitor
)
"""
def decorator(func: Callable):
timer_id = f"{self.script_id}_{func.__name__}_{id(func)}"
self.registry.register_timer(
timer_id=timer_id,
interval=seconds,
handler=func,
script_id=self.script_id,
repeat=repeat,
delay=delay
)
return func
return decorator(handler)
def once(self, delay: int = 0, handler: Callable = None):
"""注册一次性定时任务
分离式模式
VWED.timer.once(
delay=10,
handler=initialization_task
)
"""
return self.interval(0, handler=handler, repeat=False, delay=delay)