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

    文章

    7366

    浏览量

    95214
  • python
    +关注

    关注

    59

    文章

    4892

    浏览量

    90484

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    高格欣科技丨23.6寸安卓13触控屏工控一体机保障流水线24小时运行

    工厂设备流水线的标准化作业、精准智能控制,是提升生产效率、保障产品质量、规避操作风险的核心,传统作业指导书多为纸质或普通显示设备,存在更新繁琐、查看不便、无法联动设备控制等痛点,难以适配流水线高频
    的头像 发表于 05-20 15:21 94次阅读
    高格欣科技丨23.6寸安卓13触控屏工控一体机保障<b class='flag-5'>流水线</b>24小时运行

    效率跃升:将Gemini 3.1 Pro镜像站设为主力后,如何搭建自动化文本处理流水线

    国内AI深度用户早已不满足于“用上模型”,而是追求“用顺模型”。将Gemini 3.1 Pro固化为日常文本处理主力后,下一步自然是将重复性任务串成自动化流水线。目前无需特殊网络环境、每日提供免费
    的头像 发表于 05-06 10:16 496次阅读
    效率跃升:将Gemini 3.1 Pro镜像站设为主力后,如何搭建自动化文本处理<b class='flag-5'>流水线</b>

    软通动力ASDM AI优先软件研发流水线助力软件工程发展

    在 AI 深度融入软件工程的当下,软通动力 ASDM(AI 优先的系统化研发方法和平台)打造的AI 优先的软件研发流水线,成为企业研发效能跃升的核心落地载体,彻底打破传统 “人主导、AI 辅助
    的头像 发表于 02-27 11:21 743次阅读
    软通动力ASDM AI优先软件研发<b class='flag-5'>流水线</b>助力软件工程发展

    智造中枢:疆鸿智能DEVICENET转MODBUS RTU网关在食品包装流水线的融合之舞

     智造中枢:疆鸿智能DEVICENET转MODBUS RTU网关在食品包装流水线的融合之舞 在现代化食品加工包装流水线中,自动化系统的神经脉络需要畅通无阻地连接每一个环节。欧姆龙PLC作为核心控制器
    的头像 发表于 01-29 14:16 263次阅读
    智造中枢:疆鸿智能DEVICENET转MODBUS RTU网关在食品包装<b class='flag-5'>流水线</b>的融合之舞

    流水线基本结构

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

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

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

    固定式扫码器,用于流水线扫纸盒子上的条码进行分拣

    在电商仓储、食品日化等行业的生产分拣环节中,纸盒子作为最常见的包装载体,其分拣效率直接影响企业的物流周转速度。而固定式扫码器,作为专门适配流水线场景的条码扫描设备,正凭借针对性的功能设计,成为纸盒子
    的头像 发表于 09-03 16:42 1065次阅读
    固定式扫码器,用于<b class='flag-5'>流水线</b>扫纸盒子上的条码进行分拣

    工业读码器在SMT流水线上读一维码或二维码

    在SMT(表面贴装技术)生产流水线中,元器件的追溯与质量管控离不开对条码的精准识别。从PCB板到电阻、电容等小型元器件,每一个产品都贴有专属的一维码或二维码——一维码多为Code128码,用于快速
    的头像 发表于 08-20 15:30 1223次阅读
    工业读码器在SMT<b class='flag-5'>流水线</b>上读一维码或二维码

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

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

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

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

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

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

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

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

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

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

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

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

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

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