Binomic#

基于 anyio 与 Redis Streams 的异步任务框架。

Binomic 以装饰器声明任务,以 Redis Streams 投递消息,由多进程 Worker 消费执行, Master 进程负责监督与故障回收。消息体采用 msgspec JSON 序列化,任务 ID 使用 UUIDv7。

特性#

  • 声明式任务:@task() 装饰器,支持 direct(立即)、delay(延迟)、 cron(cron 表达式)、interval(固定间隔)四种模式,详见 任务模式与调度

  • Redis Streams 消息代理:基于消费者组与 PEL 的可靠投递,支持通过 xautoclaim 回收失联消费者的消息

  • 失败重试:失败或超时的消息按 max_attempts(默认 3)退避重投, 详见可靠性

  • 多进程 Worker:Master 以 multiprocessing 启动多个 Worker 子进程,并携 presence 心跳持续监督 —— 心跳走进程间 IPC(不经 Redis),因而在 is_alive() 之外还能识别「进程活着但已停跳」

  • 类型安全:全量 mypy strict 与 ruff 检查,任务注册表基于泛型 TaskSpec[P, T]

  • Litestar 集成:内置 BinomicPlugin,将 Binomic 客户端注入 Litestar 依赖

要求 Python ≥ 3.12,Redis ≥ 7.x。