- Oban是一个用于Elixir和Python的作业处理工具,利用PostgreSQL进行作业管理。
- Oban-py提供开源版(OSS)和专业版(Pro),专业版支持批量操作和真正并行处理等特性。
- 作业被插入到`oban_jobs`表中,通过PostgreSQL的`NOTIFY`和`FOR UPDATE SKIP LOCKED`机制实现并发处理。
- Oban的后台进程包括领导者选举、恢复孤立作业和清理历史作业。
- 领导者选举通过PostgreSQL的TTL租约机制实现,避免了复杂的共识协议。
- 作业重试采用带抖动的指数退避算法,防止惊群效应并确保高效的重试调度。
- Oban-py开源版支持并发但不支持并行,因此专业版更适合CPU密集型任务。
- 代码库因其清晰的结构而广受好评,易于理解和维护。