python中的分布式任务调度程序?

时间:2018-02-28 12:03:42

标签: python celery scheduled-tasks scheduler apscheduler

我想构建一个应用程序,它会按照定义的时间间隔调用周期性任务 - cron替换,但没有产生进程。我将完成很多任务,每分钟大约10000次。

  • 我应该能够动态地向调度程序添加任务,例如使用RPC
  • 任务应存储在某个中心位置,如数据库。
  • 它应该是可扩展的,这意味着我可以运行像处理预定任务的工作者实例 - 如果一个工作人员已经处于高负荷状态,另一个工作人员开始处理计划任务。

我现在已经研究过这些选项:

  • Celery - 可以作为分布式系统工作,但它并不是真正的调度程序。您无法动态安排新工作。

  • APScheduler - 可以动态添加任务,可以将任务存储在数据库中,但不会分发。

我可以概率地运行单独的apscheduler实例,但是每个实例都有不同的作业存储(mysql数据库或表)。此外,我还需要手动确定应该提交的实例作业。故障转移和可扩展性也很困难。

这个问题是否有任何现有的python或非python解决方案?

1 个答案:

答案 0 :(得分:1)

看看https://github.com/pditommaso/awesome-pipeline。这有一个很大的工作流管理工具列表,其中一个可能满足您的要求。

例如:DoItJobLib,它们声明自己是并行执行功能的简单任务系统。

他们中的许多人对你的需求来说太重了,有些人更专业(生物信息学)。

作为管理流程运行的较重任务系统的示例:LuigiToilAirflowPinball

较重的那些将具有学习曲线,但允许您集中管理任务。