接上一篇安装,这一篇是官网给的在docker上的实例
教程
安装docker就省略了,之前装了,接下来是官网给的在docker上的示例
docker pull pegasus/tutorial:5.0.0
docker run --privileged --rm -p 9999:8888 pegasus/tutorial:5.0.0
然后就访问该页面,运行1,2两个示例。http://xxx.xxx.xxx.xxx:9999/tree? 密码:scitech
访问页面后,点击该按钮运行所有代码块
第一节 API介绍
最终效果如下,Diamond工作流,矩形代表输入/输出文件,椭圆代表计算作业,箭头表示依赖
Pegasus指定的抽象工作流描述是可移植的,并且通常不包含执行作业的物理输入文件。pegasus在过程中使用三个信息目录,过程如下。
1.印入PythonAPI,详细描述在https://pegasus.isi.edu/documentation/reference-guide/api-reference.html
from Pegasus.api.mixins import EventType, Namespace
from Pegasus.api.properties import Properties
from Pegasus.api.replica_catalog import File, ReplicaCatalog
from Pegasus.api.site_catalog import (
OS,
Arch,
Directory,
FileServer,
Grid,
Operation,
Scheduler,
Site,
SiteCatalog,
)
from Pegasus.api.transformation_catalog import (
Container,
Transformation,
TransformationCatalog,
TransformationSite,
)
from Pegasus.api.workflow import Job, SubWorkflow, Workflow
from Pegasus.client._client import PegasusClientError
#或者是引入全部
from Pegasus.api import *
2.配置日志
若为了看工具(如pegasus-plan,pegasus-analyzer)的输出,则需要配置日志。
from pathlib import Path
import logging
logging.basicConfig(level=logging.DEBUG)
3.配置Pegasus属性
可以使用Properties()生成pegasus.properties文件,如果可以查看最常用的属性列表,可以使用Properties.ls(prefix)。如果给出pegasus-plan文件,则pegasus-plan将在cwd中查找pegasus.properties文件。
# --- Properties ---------------------------------------------------------------
props = Properties()
props["pegasus.monitord.encoding"] = "json"
props["pegasus.catalog.workflow.amqp.url"] = "amqp://friend:donatedata@msgs.pegasus.isi.edu:5672/prod/workflows"
props["pegasus.mode"] = "tutorial" # speeds up tutorial workflows - remove for production ones
props.write() # written to ./pegasus.properties
Properties.ls("condor.request")
4.创建副本目录(指定初始输入文件)
提供给工作流的任何初始输入文件都应在ReplicaCatalog中指定。该对象告诉Pegasus每个输入文件的物理位置。受限,我们创建一个文件,它将作为此工作流的输入。
with open("f.a", "w") as f:
f.write("This is the contents of the input file for the diamond workflow!")
./f.a将在此工作流程中使用,因此我们创建了一个相应的File对象,也可以用下面的方法将元数据添加到文件中。
接下来,创建一个ReplicaCatalog对象,以便可以对每个输入文件的物理位置进行分类。这是使用ReplicaCatalog.add_replica(site,file,path)函数完成的。由于文件f.a在提交的主机上,使用local作为位置参数。然后,File对象作为file参数。最后,pathlib.Path可以作为绝对路径。
默认情况下,如果已给出pegasus-plan的副本,它将在cwd中查找一个plicates.yml文件。