You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iTi-Flask/docs/TASKS.md

1.3 KiB

任务运行器

iTi-Flask 提供单进程任务注册表和运行器。 它适合轻量定时任务和手动任务。

能力

支持:

  • 任务注册。
  • 手动触发。
  • interval 调度。
  • 简单 cron-like 调度。
  • 单进程内防重复执行。
  • 内存运行记录。

不支持:

  • 分布式锁。
  • 多实例 exactly-once。
  • 持久化队列。
  • Celery 或 RQ 集成。

多进程部署时,只在一个专用进程启用调度。

配置

默认不启动调度线程。

class DevConfig(BaseDevConfig):
    def __init__(self) -> None:
        super().__init__()
        self.tasks_enabled = True

注册任务

from iti.tasks import task_registry


def rebuild_reports():
    return {"rebuilt": 10}


task_registry.register(
    name="reports.rebuild",
    handler=rebuild_reports,
    schedule="interval:600",
    description="重建报表缓存",
)

手动触发

from iti.tasks import task_registry

run = task_registry.trigger("reports.rebuild")
print(run.status)
print(run.result)

同一任务正在运行时,再次触发会返回 skipped

调度格式

interval:60
cron:*/10 * * * *
cron:* * * * *

cron 解析只读取分钟字段。 cron:* * * * * 等价于每 60 秒。