dgo*_*sen 15 python workflow scheduling event-based-programming amqp
我有n(通常n <10但应该扩展)进程在不同的机器上运行并使用RabbitMQ通过amqp进行通信.进程通常是长时间运行的,可以用任何语言实现(尽管大多数是java/python).
每个过程都需要许多输入(数字/字符串)并产生许多输出(也只是数字或字符串).执行进程是异步发生的:在其输入队列上发送消息并等待输出队列触发回调.
理想情况下,用户指定一些输入和所需的输出,系统应该:
如果节点的输入就绪,节点应该触发,允许每个分支并行.我现在可以假设没有循环,但最终会有循环(例如,两个进程可能需要迭代直到输出不再变化).
这应该是(数据)流程编程(之前讨论过)的已知问题,我想避免重新发明轮子.我更喜欢python解决方案,搜索引导Trellis和Pypes.Trellis不再开发,但似乎支持周期,而pypes则不支持.也不确定pypes是如何积极开发的.
进一步的搜索揭示了基于事件的编程框架的完整列表,其中没有一个我特别了解.当然有像Taverna和KNIME这样的工作流程环境,但这似乎有些过分.
有没有人有解决这类问题或提到的图书馆的经验?
编辑:我发现的其他库是:
最重要的是,如果您可以用少量代码(几百行)重新发明轮子,并且您完全理解并可以记录这些代码,那么就这样做。
考虑到一些基本的基础工具,在这个领域中使用的抽象并不难实现。RabbitMQ就是这样一个工具。Node.js 是另一个。有很多库实现了管理数据流、工作流、有限状态机等的有用方法,但它们有很多重叠,而且往往不完整。也许最初的开发人员只是构建了足够的东西来解决他最初的问题,并且由于这种类型的编程并不那么流行,因此没有足够的数量来继续开发。
按受欢迎程度对所有可能的解决方案进行排名、选择最受欢迎的解决方案并努力使其发挥作用(当然,同时分享您的工作),有很多话要说。
| 归档时间: |
|
| 查看次数: |
5051 次 |
| 最近记录: |