0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于非常简单的Python代码就能完成流水线开发

Linux爱好者 来源:Python实用宝典 作者:Ckend 2021-11-16 18:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Mara-pipelines 是一个轻量级的数据转换框架,具有透明和低复杂性的特点。其他特点如下:

基于非常简单的Python代码就能完成流水线开发。

使用 PostgreSQL 作为数据处理引擎。

有Web界面可视化分析流水线执行过程。

基于 Python 的 multiprocessing 单机流水线执行。不需要分布式任务队列。轻松调试和输出日志。

基于成本的优先队列:首先运行具有较高成本(基于记录的运行时间)的节点。

此外,在Mara-pipelines的Web界面中,你不仅可以查看和管理流水线及其任务节点,你还可以直接触发这些流水线和节点,非常好用:

1.安装

由于使用了大量的依赖,Mara-pipelines 并不适用于 Windows,如果你需要在 Windows 上使用 Mara-pipelines,请使用 Docker 或者 Windows 下的 linux 子系统。

使用pip安装Mara-pipelines:

pip install mara-pipelines

或者:

pip install git+https://github.com/mara/mara-pipelines.git

2.使用示例

这是一个基础的流水线演示,由三个相互依赖的节点组成,包括 任务1(ping_localhost), 子流水线(sub_pipeline), 任务2(sleep):

# 注意,这个示例中使用了部分国外的网站,如果无法访问,请变更为国内网站。
frommara_pipelines.commands.bash importRunBash
frommara_pipelines.pipelines importPipeline, Task
frommara_pipelines.ui.cli importrun_pipeline, run_interactively

pipeline = Pipeline(
id='demo',
description='A small pipeline that demonstrates the interplay between pipelines, tasks and commands')

pipeline.add(Task(id='ping_localhost', description='Pings localhost',
commands=[RunBash('ping -c 3 localhost')]))

sub_pipeline = Pipeline(id='sub_pipeline', description='Pings a number of hosts')

forhost in['google', 'amazon', 'facebook']:
sub_pipeline.add(Task(id=f'ping_{host}', description=f'Pings {host}',
commands=[RunBash(f'ping -c 3 {host}.com')]))

sub_pipeline.add_dependency('ping_amazon', 'ping_facebook')
sub_pipeline.add(Task(id='ping_foo', description='Pings foo',
commands=[RunBash('ping foo')]), ['ping_amazon'])

pipeline.add(sub_pipeline, ['ping_localhost'])

pipeline.add(Task(id='sleep', description='Sleeps for 2 seconds',
commands=[RunBash('sleep 2')]), ['sub_pipeline'])

可以看到,Task包含了多个commands,这些 command s会用于真正地执行动作。

而 pipeline.add 的参数中,第一个参数是其节点,第二个参数是此节点的上游。如:

pipeline.add(sub_pipeline, ['ping_localhost'])

则表明必须执行完 ping_localhost 才会执行 sub_pipeline.

为了运行这个流水线,需要配置一个 PostgreSQL 数据库来存储运行时信息、运行输出和增量处理状态:

importmara_db.auto_migration
importmara_db.config
importmara_db.dbs

mara_db.config.databases 
= lambda: {'mara': mara_db.dbs.PostgreSQLDB(host='localhost', user='root', database='example_etl_mara')}

mara_db.auto_migration.auto_discover_models_and_migrate()

如果 PostgresSQL 正在运行并且账号密码正确,输出如下所示(创建了一个包含多个表的数据库):

Created database "postgresql+psycopg2://root@localhost/example_etl_mara"

CREATETABLEdata_integration_file_dependency (
node_path TEXT[] NOTNULL, 
dependency_type VARCHARNOTNULL, 
hashVARCHAR, 
timestampTIMESTAMPWITHOUTTIMEZONE, 
PRIMARY KEY(node_path, dependency_type)
);

.. more tables

为了运行这个流水线,你需要:

frommara_pipelines.ui.cli importrun_pipeline

run_pipeline(pipeline)

这将运行单个流水线节点及其 (sub_pipeline) 所依赖的所有节点:

run_pipeline(sub_pipeline, nodes=[sub_pipeline.nodes['ping_amazon']], with_upstreams=True)

3.Web 界面

我认为 mara-pipelines 最有用的是他们提供了基于Flask管控流水线的Web界面。

对于每条流水线,他们都有一个页面显示:

所有子节点的图以及它们之间的依赖关系

流水线的总体运行时间图表以及过去 30 天内最昂贵的节点(可配置)

所有流水线节点及其平均运行时间和由此产生的排队优先级的表

流水线最后一次运行的输出和时间线

对于每个任务,都有一个页面显示

流水线中任务的上游和下游

最近 30 天内任务的运行时间

任务的所有命令

任务最后运行的输出

此外,流水线和任务可以直接从网页端调用运行,这是非常棒的特点。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7314

    浏览量

    93982
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89583

原文标题:超级方便的轻量级 Python 流水线工具,还有漂亮的可视化界面!

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    流水线基本结构

    访问)。 特点: 每级流水线功能独立,硬件单元分工明确。 吞吐量较高(理想情况下每个周期完成一条指令)。 但层级更多,硬件复杂度略高,动态功耗较大。 2级流水线(Cortex-M0+) 合并为以下
    发表于 11-21 07:35

    如何更好地选择工业流水线上用的条码扫码器?

    五花八门的设备,如何精准挑选出符合流水线需求的条码扫码器,成为不少企业采购时的难题。其实,只要围绕核心性能指标、匹配具体应用场景,并参考靠谱品牌,就能轻松找到适配
    的头像 发表于 11-05 15:49 119次阅读
    如何更好地选择工业<b class='flag-5'>流水线</b>上用的条码扫码器?

    激光振镜运动控制器在流水线激光打标上的应用

    正运动流水线激光打标解决方案
    的头像 发表于 08-05 11:26 790次阅读
    激光振镜运动控制器在<b class='flag-5'>流水线</b>激光打标上的应用

    流水线扫码升级选NVF230!工业二维码读码器方案实测

    在现代流水线生产中,给每件产品贴上独特的“电子身份证”——DPM条码,再用工业二维码读码器实时追踪定位,早已是保障高效运转的关键操作。但轮到饮料行业,给瓶身或瓶盖上的DPM条码“打卡”,却成了让不少
    的头像 发表于 07-17 15:09 379次阅读
    <b class='flag-5'>流水线</b>扫码升级选NVF230!工业二维码读码器方案实测

    自动化开装封码流水线数据采集解决方案

    在智能制造加速推进的时代背景下,自动化开装封码流水线广泛应用于食品、药品、日化、电子等众多行业,承担着产品自动开箱、装填、封箱、贴标及码垛的核心生产任务。随着生产规模扩大和精细化管理需求的提升,对流水线
    的头像 发表于 06-27 15:56 526次阅读
    自动化开装封码<b class='flag-5'>流水线</b>数据采集解决方案

    面包成型流水线数据采集远程监控系统

    该食品加工企业主要从事多种口味的面包生产及销售,拥有一整条完整的面包成型流水线,能够自动进行面块切割、整平折叠、多次擀薄、冷库发酵、包油加馅、排盘等工序,各个变频器和伺服通过PLC进行集中控制,要求
    的头像 发表于 06-16 17:11 510次阅读
    面包成型<b class='flag-5'>流水线</b>数据采集远程监控系统

    远程io模块在汽车流水线的应用

    在汽车制造领域,生产流水线的高效、稳定运行是保障产品质量与生产效率的关键。随着工业 4.0 和智能制造理念的深入,汽车生产企业对流水线自动化控制提出了更高要求,不仅要实现设备间的精准协同作业,还需
    的头像 发表于 06-11 15:26 495次阅读

    工业4.0时代,为什么你的流水线必须配备固定式扫码器?

    在工业4.0时代,制造业正朝着智能化、自动化的方向飞速发展。在这一进程中,流水线作为生产的关键环节,配备固定式扫码器已成为提升生产效率、保证产品质量和实现智能化管理的必然选择。固定式扫码器能极大
    的头像 发表于 06-09 16:12 409次阅读
    工业4.0时代,为什么你的<b class='flag-5'>流水线</b>必须配备固定式扫码器?

    【经验分享】玩转FPGA串口通信:从“幻觉调试”到代码解析

    FPGA开发,思路先行!玩FPGA板子,读代码是基本功!尤其对从C语言转战FPGA的“宝贝们”来说,适应流水线(pipeline)编程可能需要点时间。上篇点灯代码解读了基础,而如果能亲
    的头像 发表于 06-05 08:05 877次阅读
    【经验分享】玩转FPGA串口通信:从“幻觉调试”到<b class='flag-5'>代码</b>解析

    工业流水线上用的条码扫码器,如何选择与使用?

    在现代工业自动化生产中,条码扫码器(又称工业读码器)作为数据采集的关键设备,广泛应用于流水线上,有效提升了生产效率并减少了人为错误。然而,面对市场上种类繁多、功能各异的条码扫码器,如何正确选择并
    的头像 发表于 05-14 15:18 654次阅读
    工业<b class='flag-5'>流水线</b>上用的条码扫码器,如何选择与使用?

    RISC-V五级流水线CPU设计

    本文实现的CPU是一个五级流水线的精简版CPU(也叫PCPU,即pipeline),包括IF(取指令)、ID(解码)、EX(执行)、MEM(内存操作)、WB(回写)。
    的头像 发表于 04-15 09:46 1348次阅读
    RISC-V五级<b class='flag-5'>流水线</b>CPU设计

    效率卡在扫码环节?工厂流水线加装工业级扫码设备,产能直接拉满

    在智能制造转型的大潮中,工厂流水线的每一个环节都成为了提升效率的关键。然而,扫码环节长期被视为效率瓶颈,传统的人工扫码方式因其速度慢、易出错、无法实时追溯等问题,严重制约了生产线的整体效能。这一痛点
    的头像 发表于 04-14 13:55 517次阅读
    效率卡在扫码环节?工厂<b class='flag-5'>流水线</b>加装工业级扫码设备,产能直接拉满

    机械自动化流水线设计中常见的结构动图

    等。 今天给大家分享一些机械自动化流水线设计中常见的一些结构,这些动态图很直观,有助于大家了解其原理,非常好懂。 步进输送机构   包装线  拾取机械手   货物分选   分选   机械手上料   传送机构   加工模块   并
    的头像 发表于 02-17 17:21 1387次阅读
    机械自动化<b class='flag-5'>流水线</b>设计中常见的结构动图

    科达KCloudStor云存储系统与鲲鹏携手推进原生开发技术创新

    工具,实现了从代码开发流水线构建到兼容性测试、性能优化的全方位合作。 通过这一合作,科达KCloudStor云存储系统成功实现了“1套代码+1条
    的头像 发表于 01-23 16:22 1074次阅读

    工业二维码条码扫描器流水线条码扫描

    在工业生产的广阔舞台上,工业二维码条码扫描器以其卓越的耐用性和高效的扫描能力,成为了连接自动化生产与信息管理不可或缺的桥梁。它们不仅是工厂流水线上的“慧眼”,更是提升生产效率、保障产品质量的得力助手
    的头像 发表于 01-07 16:07 900次阅读
    工业二维码条码扫描器<b class='flag-5'>流水线</b>条码扫描