开箱即用的分布式作业队列解决方案



是否存在现成的作业队列框架?基本思想是

  1. 将作业状态为New的作业排入队列的人
  2. (多个(工人得到一个工作并在上面工作,将该工作标记为Taken。一个作业最多只能在一个工作人员上运行
  3. 如果正在运行的作业超过预定义的超时时间,则会监视工作进程状态,并将其重新排入队列,状态为New,这可能是工作进程健康问题
  4. 工作人员完成任务后,会在队列中将该任务标记为Completed
  5. 某些东西不断清理已完成的任务。或者在步骤#4,当工作者完成一个任务时,工作者简单地将该任务出列

根据我的调查,像Kafka(pub/sub(或MQ(push/pull&pub/sub。然而,它们都需要围绕其核心功能进行某种开发,才能成为一个功能齐全的作业队列。

还研究了关系数据库;SELECT*FOR UPDATE SKIP LOCKED";语法也是一个很好的候选者,这再次需要DB和worker之间的守护进程,这意味着要付出额外的努力。

还考察了云解决方案、Azure队列存储等类似的评估。

所以我的问题是,有没有现成的工作队列解决方案,专门为一件事量身定制,即工作队列,而不需要太多精力来设置?

感谢

看看Python Celery。https://docs.celeryproject.org/en/stable/getting-started/introduction.html

默认模式使用RabbitMQ作为消息代理,但也可以使用其他选项。如果需要,可以将结果存储在数据库中。

最新更新