Python 现代的调度框架:Rocketry

小羊苏西1年前 ⋅ 2391 阅读

Rocketry 是 Python 应用程序的现代调度框架。它简单、干净且广泛。

主要特征:

  • 简单:高效且易于设置
  • 稳健:经过良好测试和生产就绪
  • 广泛:许多内置功能
  • 可定制:专为修改而设计

核心功能:

  • 强大的调度
  • 许多内置的调度选项(包括cron)
  • 并发(异步、线程、多处理)
  • 参数化
  • 任务流水线
  • 可修改的运行时会话
  • 异步支持
from rocketry.conds import every
from rocketry.conds import hourly, daily, weekly, 
from rocketry.conds import time_of_day
from rocketry.conds import cron

@app.task(every("10 seconds"))
def do_continuously():
    ...

@app.task(daily.after("07:00"))
def do_daily_after_seven():
    ...

@app.task(hourly & time_of_day.between("22:00", "06:00"))
def do_hourly_at_night():
    ...

@app.task((weekly.on("Mon") | weekly.on("Sat")) & time_of_day.after("10:00"))
def do_twice_a_week_after_ten():
    ...

@app.task(cron("* 2 * * *"))
def do_based_on_cron():
    ...

https://github.com/Miksus/rocketry

系统自带的crontab不够用吗?

@Runtime crontab无法工程化

有哪些使用场景?

Rocketry 是一个现代的调度框架,主要用于分布式任务调度、数据处理和机器学习等场景。

以下是 Rocketry 的一些使用场景:

1. 数据处理:Rocketry 可以用来调度大规模的数据处理任务,如 ETL(Extract,Transform,Load)任务、数据清洗和数据分析等。

2. 机器学习:Rocketry 可以用来调度机器学习任务,如训练和预测等。

3. 实时数据处理:Rocketry 可以用来调度实时数据处理任务,如流式数据处理、实时计算和事件处理等。

4. 自动化任务:Rocketry 可以用来调度自动化任务,如定时备份、定时发布、自动化测试和自动化部署等。

5. 分布式任务调度:Rocketry 可以用来调度分布式任务,如大规模并行任务调度和分布式计算等。

总之,Rocketry 是一个通用性很强的任务调度框架,适用于许多不同类型的场景。

有哪些类似的项目?

以下是几个类似的 Python 现代调度框架项目:

1. Airflow:由 Apache 软件基金会支持的开源工作流程管理平台,可用于调度复杂的数据管道任务。

2. Luigi:一个 Python 模块,用于构建复杂、分布式数据管道,并作为一个运行时框架执行这些管道任务。

3. Celery:一个分布式任务队列,用于并行处理大量消息和任务。

4. rq:一个 Python 的简单任务队列,使用 Redis 作为后端。

5. Dask:一个用于并行化分析的灵活,并可扩展的分布式计算库,支持本地和分布式计算,也支持实时数据处理和机器学习任务。

6. Pachyderm:一个分布式数据处理框架,支持自动化和可扩展的数据管道,以及在 Kubernetes 上运行计算。

7. Prefect:一个用于构建现代 ETL 和数据工程的 Python 库,设计用于处理大量的工作流程任务,并使用 DAGs 进行可视化调整。

有哪些优缺点?

优点:
1. 简单易用:Rocketry 提供了简单易用的调度功能和任务编排能力,并且具有良好的文档和示例。
2. 插件化:Rocketry 允许用户开发自定义插件,以满足不同的需求,例如支持自定义存储后端、通知后端等等。
3. 支持多种任务类型:Rocketry 支持多种任务类型,例如 Bash、Python、Docker、SSH 等等,可以满足不同场景下的任务调度需求。
4. 分布式架构:Rocketry 的调度器是基于分布式架构实现的,可以支持多节点并发执行任务,提高了调度的吞吐量和可靠性。

缺点:
1. 功能相对简单:Rocketry 比较适合简单的调度场景,如果任务复杂度较高,可能需要自行开发插件或选择其他更强大的调度框架。
2. 社区相对小:目前 Rocketry 的社区相对小,优化和 issue 处理速度可能相对缓慢。
3. 缺乏可视化界面:Rocketry 缺乏可视化界面,需要通过配置文件或 API 来进行任务的管理和调度。

全部评论: 0

    相关推荐