首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用docker和python创建和跟踪处理链

如何使用docker和python创建和跟踪处理链
EN

Stack Overflow用户
提问于 2018-10-30 12:54:23
回答 1查看 77关注 0票数 0

我正在研究一系列的过程,我计划把它们放入自己的容器中。这是一个简单的一步一步的过程,但我不知道从一个容器到下一个容器获取数据的最佳方法是什么,也不知道如何跟踪进度。通常,我会将活动2、3和4个单独的脚本导入到活动1中。现在,每个活动都是一个单独的容器,我不知道该怎么做。

活动1-提供一个二维形状矢量。将其传递给活动2。

活动2-根据活动1提供的形状下载图像。

活动3-一旦图像被下载,运行一些分析。

活动4-一旦分析完成,运行统计数据并将信息保存到数据库中。

一个想法是使用码头运行和入口点。活动1将在某个时候运行活动2,它将python脚本作为入口点。

代码语言:javascript
复制
docker run activity2 "inputVectorFromActivity1"

另一个选择是使用环境变量。

代码语言:javascript
复制
docker run activity2 -e INVECTOR="inputVectorFromActivity1"

因此,在这些例子中,活动1调用2,调用3,调用4。这似乎合乎逻辑,但我不确定这是最好的解决方案。我也没有看到一种优雅的方法来跟踪进度或报告错误。

任何洞察力都会受到极大的赞赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-30 13:44:43

我会查看一个排队系统,例如RabbitMQ。这将使您有四个队列,每个任务一个队列,并让您跟踪事物的位置,并且一次在每种可能的状态下有多个事物。您可以有四个单独的长时间运行的容器,它们都是在其中一个队列上工作的,如果您需要更多的处理能力,比如说分析阶段,您可以启动容器的多个副本。

当您列出问题时,实际上听起来并不太复杂,您应该考虑在单个进程/脚本/容器中运行这个问题的优点。(例如,“从某个磁盘位置获取数据并将其复制到数据库”的最后一步可能更容易与前面的步骤合并;如果整个管道简化为“获取数据、处理数据并保存数据”,则不将其称为“管道”可能更简单。)

您几乎肯定不应该将docker rundocker exec作为核心处理流程的一部分。如果您可以运行这些Docker命令中的任何一个,那么您可以对主机系统做任何事情:有一些主要的安全问题您不愿意考虑。取决于您的环境,您可能也希望避免一些启动成本(例如,涉及JVM的任何东西仍然要花费很长时间才能出现)。长期运行的工人容器通常是一个更好的模型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53064777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档