【问题标题】:Distributed task scheduler in python?python中的分布式任务调度程序?
【发布时间】:2018-08-08 07:25:29
【问题描述】:

我想构建一个应用程序,它会以定义的时间间隔调用定期任务 - 类似于 cron 替换,但没有生成进程。我会有很多任务,大约每分钟 10000 个。

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

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

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

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

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

这个问题有没有现成的python或非python解决方案?

【问题讨论】:

    标签: python celery scheduled-tasks scheduler apscheduler


    【解决方案1】:

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

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

    其中许多对于您的需求来说过于繁重,而有些则更专业(生物信息学)。

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

    较重的将有一个学习曲线,但可以让您集中管理任务。

    【讨论】:

    • 谢谢,我去看看。我可以花时间学习,比创建和管理自己的解决方案更好。
    • @Josh 你有没有得到任何动态和分布式创建工作的库。我也有同样的要求。
    猜你喜欢
    • 1970-01-01
    • 2015-01-06
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多