没有项目描述

gaia的Python项目详细描述


gaia python客户端

运行

要连接到正在运行的gaia服务器,请找到主机(如果需要,请打开到该主机的ssh隧道),然后执行以下操作:

import gaia
config = {'gaia_host': 'localhost:24442'}
flow = gaia.Gaia(config)

既然我们有了对客户机的引用,就可以调用这些方法来操作命名的工作流:

  • 命令-查看可用的命令并添加新命令
  • 合并-更新或添加新步骤
  • 运行-重新计算依赖项并运行未完成的步骤
  • 停止-停止正在运行的工作流
  • 状态-查找有关给定工作流的所有信息
  • expire-重新计算给定的存储密钥和步骤及其所有相关步骤

要进行某些操作,请在wcm中运行工作流:

commands = gaia.load_yaml('../../resources/test/wcm/wcm.commands.yaml')
wcm = gaia.load_yaml('../../resources/test/wcm/wcm.processes.yaml')
flow.command('wcm', commands)
flow.merge('wcm', wcm)

你还需要启动一些西西弗斯工人。为此:

flow.launch(['a', 'b'])

如果需要,请启动更多:)为每个用户指定一个唯一的名称。 他们将在完成最后一步5分钟后取消分配。

命令

命令是可以运行的底层操作,特别是:给定docker容器映像中的命令行程序。一旦定义,命令就可以用一组新的变量、输入和输出调用任意次数。

如果使用空的或不存在的数组参数调用此方法,它将返回命名工作流中的所有命令。

flow.command('biostream')
# [{'name': 'ls', 'image': 'ubuntu', ...}, ...]

命令用以下键表示为字典:

  • name—命令的名称
  • 图像-要在其中运行的Docker图像
  • command-要执行的shell标记数组
  • input s—将存储密钥映射到Docker容器中的内部路径,该容器将放置命令的输入文件
  • output s—将存储密钥映射到Docker容器中的内部路径,在该容器中,将在命令运行后检索该命令的输出文件
  • vars—将var键映射到要插入命令标记的字符串值

它们还可以有一个可选的stdout键,指定放置stdout输出的路径(以便stdout可以用作命令的输出之一)。

flow.command('biostream', [...])

如果用命令项数组调用flow.command(),它将把给定的命令合并到工作流中,从而添加和/或替换命令,并触发引用这些命令的任何步骤的重新计算。

合并

一旦工作流中存在某些命令,就可以开始分步合并以触发计算。每个步骤命名一个命令并设置该命令的变量、输入和输出。输入和输出是指数据存储中的路径,而变量是可以拼接到命令外壳标记的各个部分的字符串。

命令和步骤保存在工作流中,工作流之间完全封装。每个工作流都有自己的数据空间和自己的名称和值集。

要调用merge方法,请提供工作流名称和一系列步骤:

flow.merge('biostream', [{'name': 'ls-home', 'command': 'ls', 'inputs': {...}, ...}, ...])

每个步骤都是一本字典,包含以下键:

  • name—步骤的名称
  • command—要调用的命令的名称
  • inputs—由命令定义的输入键映射到数据存储区中的键以读取输入文件
  • outputs—将命令中的输出键映射到数据存储中的键,以便在成功调用命令后写入输出文件
  • 变量-变量键到值的映射。如果这是一个数组,它将使用给定值为数组中的每个元素创建一个步骤

如果这是一个名称以前从未出现过的步骤,那么它将创建步骤条目,并在数据存储中提供所需输入时触发输出计算。如果要合并的步骤的已存在于工作流中,则该步骤将与依赖于该工作流中已更新步骤的输出的所有步骤一起更新和重新计算。

运行

run方法只是触发计算在提供的工作流中(如果尚未运行):

flow.run('biostream')

停止

"halt"方法与"run"方法相反。它将立即取消所有正在运行的任务并停止给定工作流中的计算:

flow.halt('biostream')

状态

status方法提供有关给定工作流的信息。有很多可用的信息,它被格式化为一个带以下键的字典:

  • 状态-表示整个工作流状态的字符串。可能的值有"initialized"、"running"、"complete"、"halded"和"error"。
  • 流-包含将工作流中的步骤表示为一个二分图:步骤数据。每个条目都有一个from字段,其中包含它所依赖的步骤或数据名称,还有一个to字段,其中包含它所依赖的所有步骤或数据名称。
  • 数据-包含数据键到其当前状态的映射:丢失或完成
  • 任务-包含有关通过配置的执行器运行的每个任务的信息。这在很大程度上取决于执行人
flow.status('biostream')

过期

expire方法接受工作流和步骤名和数据名(存储密钥)的列表。这使得这些步骤和相关步骤必须重新运行。

import gaia
config = {'gaia_host': 'localhost:24442'}
flow = gaia.Gaia(config)
0

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java HTTP Status 500实例化servlet类示例时出错。网络应用   java如何在Android中存储密钥   固定宽度的java JScrollPane   Scala枚举可以映射到像Java这样的整数吗?   Java的命名约定是什么。属性文件?   从Apple Script运行Java的applescript   哪种类型的花括号编码风格更适合java程序员?   SpringWebFlux中的java实现“有效”,但我试图理解“为什么?”   java在给定条件下找到可能的最小数组   ExecutorService的java超时而不阻塞主线程   Java:将对象强制转换为数组类型   java无法引用/修改innerclass中的非最终变量   java Android Studio网络探查器:无法在网络活动图上选择范围   java XMLUnit忽略元素顺序   java无法从游标窗口读取第0行第1列错误   java如何在weka random forest中获取ClassValue?   java如何设置单击计数以显示对象?