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

77 lines
1.3 KiB
Markdown

# 任务运行器
iTi-Flask 提供单进程任务注册表和运行器。
它适合轻量定时任务和手动任务。
## 能力
支持:
- 任务注册。
- 手动触发。
- `interval` 调度。
- 简单 cron-like 调度。
- 单进程内防重复执行。
- 内存运行记录。
不支持:
- 分布式锁。
- 多实例 exactly-once。
- 持久化队列。
- Celery 或 RQ 集成。
多进程部署时,只在一个专用进程启用调度。
## 配置
默认不启动调度线程。
```python
class DevConfig(BaseDevConfig):
def __init__(self) -> None:
super().__init__()
self.tasks_enabled = True
```
## 注册任务
```python
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="重建报表缓存",
)
```
## 手动触发
```python
from iti.tasks import task_registry
run = task_registry.trigger("reports.rebuild")
print(run.status)
print(run.result)
```
同一任务正在运行时,再次触发会返回 `skipped`
## 调度格式
```text
interval:60
cron:*/10 * * * *
cron:* * * * *
```
cron 解析只读取分钟字段。
`cron:* * * * *` 等价于每 60 秒。