跳转到主要内容

Pipe Dreams:科学数据发布API

项目描述

🔬 Pipe Dreams

你想

  • 整理你的大量零散脚本吗?
  • 创建整洁且可重用的Python管道来处理你的数据或运行作业吗?
  • 拥有基于图(DAG)的并行化而不必过于麻烦吗?
    那么,你就在正确的位置。Pipe Dreams是一个超级轻量级的应用程序编程接口(API),用于支持科学数据数据管道的构建和处理。它最初是为实验室目录和存档系统构建的,但现在对其他系统开放。

我们是如何做到的

  • 我们使用Python字典来封装管道中流动的所有中间结果/数据,这样您不仅可以声明并运行一系列函数,还可以将单个输出变量连接到某些特定的输入参数。更重要的是,您可以重命名、合并并对您的中间结果进行其他精细控制。
  • 我们提供了一个可被继承的Plugin类,可以用来组织您的Python函数,然后在我们的框架中使用它们的相对字符串路径来调用这些函数。
  • 我们使用CeleryRedisNetworkX来并行化工作流程,而对用户部分的设置尽可能少。

🚗 启动Redis

Pipe Dreams API需要Redis来运行。为了启动Redis(假设已安装Docker),请运行

$ docker container run \
    --name labcas-redis \
    --publish 6379:6379 \
    --detach \
    redis:6.2.4-alpine

💿 安装Pipe Dreams

Pipe Dreams是一个开源的Python安装包。它需要Python 3.7或更高版本。通常,您会将其安装到Python虚拟环境中,但您也可以将其放入Conda或如果您必须的话,系统Python中。

要使用虚拟环境,请运行

$ python3 -m venv venv
$ venv/bin/pip install --upgrade setuptools pip wheel
$ venv/bin/pip install jpl.pipedreams
$ source venv/bin/activate  # or use activate.csh or activate.fish as needed

完成此操作后,您可以使用venv/bin/python作为Python解释器,并且Pipe Dreams API(及其所有依赖项)将准备就绪以供使用。请注意,尽管activate步骤已被弃用,但它仍然是必要的,以便在您的执行路径上有celery程序。

👉 注意:截至Pipe Dreams 1.0.3版本,支持Python 3.7至Python 3.9。Python 3.10尚未被此包支持。

👩‍💻 定制工作流程

下一步是创建一个工作流程来定义发布数据的处理步骤。例如,请参阅GitHub上此包的发行版中的demo/demo.py

总之,您需要

  1. 创建一个Operation实例。
  2. 将管道(一系列命名函数)添加到实例中。
  3. 以单进程或多进程运行操作。

📗 处理数据管道

最后,在Redis运行并定义了自定义工作流程后,您可以执行您的管道。

例如,我们提供了一个演示工作流程和相关测试数据。您可以在以下方式中运行它(假设您已经获得了上面的虚拟Python环境)

$ curl -LO https://github.com/EDRN/jpl.pipedreams/releases/download/v1.0.2/demo.tar.gz | tar xzf -
$ cd demo
$ ../venv/bin/pip install --requirement requirements.txt
$ ../venv/bin/python demo.py
Adding Node: hello_world_read|+|mydata0.txt

num nodes in task graph: 7
num task completed: 7
time taken: 0:00:00.NNNNN

就这样 🥳

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面