akuanduba是一个python框架,它简化了对多个运行线程和共享资源的操作。它的名字来源于巴西神话中的神:秩序之神Akuanduba。
Akuanduba的Python项目详细描述
阿昆杜巴
示例:使用服务获取数据。
其他主要概念
除了这些基类之外,akuanduba还依赖于其他几个主要概念:
- 上下文;
- 数据框架管理器
- 工具管理器
- 服务管理器
- Akuandubattrigger
- 工具管理器
上下文是一个抽象,它包含附加到框架的每一个东西:工具,服务和数据帧。通过这种方式,可以从连接到akuanduba的任何其他组件访问所有内容。从上下文中获取的每个数据帧都被锁定到execute方法,并仅在其执行后释放。
管理器(数据框架管理器、工具管理器和服务管理器)都基于管理器类,它们之间的唯一区别是它们管理不同的东西。您可以分别管理数据帧、工具和服务。在另一个世界rds,您可以使用\u add\uu操作附加它们,并使用retrieve方法检索它们。您附加到这些管理器上的内容将按您的顺序运行(稍后将更好地讨论执行)。
akuandubattrigger是继承自akuandubatool的类。它的目的是构建一个对象,您可以附加多个假设测试(必须继承自triggercondition)和工具,以便触发所有这些工具的execute方法。您可以使用三种类型的触发器:"and"、"or"和"xor",它们都是不言而喻的。
执行
akuanduba本身有三种主要的方法:初始化,执行和完成。
initialize方法遵循以下步骤:
- 将框架状态插入上下文
- 将dataframemanager上的所有数据帧插入上下文中
- 将servicemanager上的所有服务插入上下文中并运行它们;
- 将toolmanager上的所有工具插入上下文中,运行它们;
- 检查上下文中的错误初始化。
- 将dataframemanager上的所有数据帧插入上下文中
execute方法是主执行循环。它的任务是:
- 循环访问服务,调用它们的execute方法;
- 循环浏览工具,调用它们的execute方法;
最后,finalize方法只是试图杀死由akuanduba框架创建的每个线程。
示例
假设有两个服务从不同的源获取数据,一个工具处理整个数据。您可以构建一个脚本,将服务附加到服务管理器和工具附加到工具管理器。假设,为此,您创建了两个数据帧,一个用于存储原始数据,另一个用于处理数据。脚本执行的图表如下:
如您所见,服务的run方法实时获取数据并将其附加到自己的队列中。在主akuanduba循环中,调用execute方法,并将数据存储在数据帧(1和2)上。之后,将调用工具执行方法,在该方法中,数据将被处理并存储在另一个数据帧(3)上。
做某事!(下一版本)- 删除不推荐的触发器实现。