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.
65 lines
1.0 KiB
Markdown
65 lines
1.0 KiB
Markdown
# 任务
|
|
|
|
iTi-Flask 提供单进程任务注册表和运行器。
|
|
|
|
它用于轻量定时任务或手动触发任务。
|
|
它不是分布式任务平台。
|
|
|
|
## 范围
|
|
|
|
支持:
|
|
|
|
- 任务注册。
|
|
- 手动触发。
|
|
- interval 调度。
|
|
- 简单 cron-like 调度。
|
|
- 单进程内防重复执行。
|
|
- 内存中的运行状态。
|
|
- 结构化日志。
|
|
|
|
不支持:
|
|
|
|
- 分布式锁。
|
|
- 多实例 exactly-once。
|
|
- 默认 Celery 或 RQ。
|
|
- 持久化队列存储。
|
|
|
|
多进程生产部署时,只在一个专用进程中启用 scheduler。
|
|
|
|
## 使用
|
|
|
|
```python
|
|
from iti.tasks import task_registry
|
|
|
|
|
|
def sync_users():
|
|
return {"synced": 10}
|
|
|
|
|
|
task_registry.register(
|
|
name="erp.sync.users",
|
|
handler=sync_users,
|
|
schedule="interval:600",
|
|
)
|
|
```
|
|
|
|
手动触发:
|
|
|
|
```python
|
|
from iti.tasks import task_registry
|
|
|
|
run = task_registry.trigger("erp.sync.users")
|
|
```
|
|
|
|
## 调度格式
|
|
|
|
第一版支持的 schedule 格式:
|
|
|
|
```text
|
|
interval:60
|
|
cron:*/10 * * * *
|
|
```
|
|
|
|
内置 cron 支持刻意保持很小。
|
|
复杂调度后续接专用 scheduler 集成。
|