v20150630-related-0.1a6相关说明

1. 类和常量

序号

名称

可序列化

描述

1.

Client

No

与BatchCompute交互的客户端类型

2.

JobDescription

Yes

描述用户作业的类

3.

TaskDag

Yes

描述作业任务以及任务间互相之间依赖关系的类

4.

TaskDescription

Yes

描述任务的类

5.

ResourceDescription

Yes

描述任务对CPU, Memory资源需求的类

6.

Job

Yes

描述给定作业当前状态信息的类

7.

Task

Yes

描述给定的作业任务的当前状态信息的类

8.

Instance

Yes

描述给定的任务实例当前状态信息的类

9.

Image

Yes

描述给定镜像的信息的类

10.

CreateResponse

No

创建新作业时Client返回的响应类

11.

GetResponse

No

获取作业状态及作业描述时,Client返回的响应类

12.

ActionResponse

No

对作业尽行开始、停止或者删除等操作时由Client返回的响应类

13.

ListResponse

No

列举所有作业和镜像时,由Client返回的响应类

14.

CN_QINGDAO

No

常量,BatchCompute的青岛endpoint

15.

CN_SHENZHEN

No

常量,BatchCompute的深圳endpoint

1.1 关于类属性

说明

除了Client类型,SDK中的大部分类型均具有各种属性。属性均可以通过其名称直接读取,例如,你可以通过如下代码获取作业ID:另外属性名与Python规范PEP8中类的命名方式保持一致(区别于类方法的命名规则),遵循CamelCase的拼写规则。

# job is a Job object.
job = ...

job_id = job.JobId
print(job_id)
  • 另外,可以通过字典取值的方式获取属性,例如:

# job is a Job object.
job = ...

job_id = job['JobId']
print(job_id)
  • 对于类 JobDescription, TaskDag, Task, ResourceDescription, 可以通过赋值的方式更改某个属性的值,例如:

from batchcompute import JobDescription

job_desc = JobDescription()
job_desc.JobName = 'find-prime'
  • 对于类 JobDescription, TaskDag, TaskDescription, ResourceDescription, 可以通过字典的方式对类的属性进行赋值,例如:

from batchcompute import JobDescription

job_desc = JobDescription()
job_desc['JobId'] = 'find-prime'

1.2 关于可序列化

说明

SDK中所有可序列化的类均从内部类型 Jsonizable 继承而来,以下是关于 Jsonizable 类型及其子类的描述。

参数说明:

说明

Jsonizable 及其子类对象均可通过字典,Jsonizable 对象或者描述字典的JSON串初始化。 注意,在初始化 Jsonizable 对象及其子类时,会丢弃字典或者JSON串中所有不合法的属性描述信息。

参数

类型

描述

properties

dict, str, Jsonizable object

属性描述信息

  • 通过字典初始化 Jsonizable 类:

e.g.

from batchcompute import JobDescription

# A dict object.
properties = {
    "JobName": "find-prime",
    "JobTag": "Batchcompute"
}

jsonizable = JobDescription(properties)
print(jsonizable.JobName)
print(jsonizable.JobTag)
  • 通过JSON字符串初始化 Jsonizable 类:

e.g.

from batchcompute import JobDescription

# A string jsonized from a dict object.
properties = '''{
    "JobName": "find-prime",
    "JobTag": "Batchcompute"
}'''

jsonizable = JobDescription(properties)
print(jsonizable.JobName)
print(jsonizable.JobTag)
  • 通过相同类的对象初始化 Jsonizable 类:

e.g.

form batchcompute import JobDescription

# A JobDescription object.
jsonizable1 = JobDescription()
jsonizable1.JobName = 'find-prime'
jsonizable1.JobTag = 'Batchcompute'

jsonizable2 = JobDescription(jsonizable1)
print(jsonizable2.JobName)
print(jsonizable2.JobTag)

方法说明:

序号

方法名

描述

1.

update

接受一个字典对象,更新类的部分属性,不合法的属性将被丢弃

2.

detail

返回一个包含类属性的字典,如果属性为空将不被包含

3.

load

接受一个字符串,该字符串是一个JSON化的字典,类的属性均被更新,不合法的属性会被丢弃

4.

dump

返回一个字符串,内容JSON化的字典,包含所有类属性信息,如果属性为空将不被包含

5.

__str__

被print调用的内置函数,其内部调用了dump函数

1.3 关于响应类

说明

所有的返回类(CreateResponse, GetResponse, ActionRespnse, ListResponse)均继承内部类型RawResponse。 以下描述适用于所有的RawResponse的子类。

属性说明:

属性

类型

描述

RequestId

str

Client的所有请求的识别码

StatusCode

int

Client的所有请求的状态码

e.g.

...

response = client.create_job(job_desc)

print response.RequestId
print response.StatusCode

2. Client 类

参数说明:

参数

类型

描述

endpoint

str

可用的BatchCompute域名或region

access_key_id

str

用户的Aliyun access key id

access_key_secret

str

用户的Aliyun access key secret

human_readable

bool

是否格式化输出时间戳信息

e.g.

from batchcompute import Client, CN_QINGDAO

endpoint = CN_QINGDAO
access_key_id = ... # your_access_key_id
access_key_secret = ... # your_access_key_secret

client = Client(endpoint, access_key_id, access_key_secret, human_readabel=True)

# You can enjoy Batchcompute through this `client` now!
...

2.1 create_job

参数说明:

说明

所有类型的参数将被转换为包含属性信息的字典对象。

参数

类型

描述

job_desc

JobDescription object, str, dict

Job的简单描述和Job对象中有各个任务的描述信息,以及各个任务之间的DAG依赖

返回值说明:

说明

create_job 方法将返回一个CreateResponse对象, 以下是 CreateResponse 对象的属性, 可以通过 response.JobId 的方式获取新任务的ID。

属性

类型

描述

JobId

str

新任务的任务ID

e.g.

try:
    # Init a Client object.
    client = ...

    # Refer to JobDescription class to have a look at how to create a new job description.
    job_desc = JobDescription(...)

    job = client.create_job(job_desc)
    # Print out the job id.
    print(job.JobId)
except ClientError, e:
    print(e)

(1)JobDescription 类

参数说明:

参数

类型

描述

properties

dict, str, JobDescription object

包含作业描述信息的对象

属性说明:

序号

属性

类型

描述

1.

JobName

str

作业名称

2.

Priority

int

优先级用一个[0,1000]范围内的整数指定。数值越高表示作业调度时的优先级越高

3.

Description

str

作业的简短描述信息

4.

TaskDag

TaskDag object

Job对象中有各个任务的描述信息,以及各个任务之间的DAG依赖

e.g.

  • 可以通过赋值一一设置作业的描述信息。

from batchcompute import JobDescription, TaskDag, ResourceDescription

# Refer to TaskDag class to have a look at how to create a TaskDag.
task_dag = ... # A TaskDag object.

job_desc = JobDescription()
job_desc.JobName = 'find-prime'
job_desc.JobTag = 'Batchcompute'
job_desc.TaskDag = task_dag
job_desc.Description = 'Batchcompute Python SDK'
job_desc.Priority = 100

print(job_desc)

# You can create a new job with this description now!
...
  • 也可以通过dict或者dict的JSON串批量设置作业的描述信息。

from batchcompute import Jobdescription, Taskdescription, TaskDag, ResourceDescription

job_json = '''{
    "JobName": "find-prime"
    "JobTag": "Batchcompute",
    "Priority": 0,
    "TaskDag": {
        "TaskDescMap": {
            "Find": {
                "PackageUri": "oss://your-bucket/batch_python_sdk/worker.tar.gz",
                "ProgramName": "find_prime_worker.py",
                "ProgramType": "python",
                "InstanceCount": 1,
                "ResourceDescription": {
                    "Cpu": 800,
                    "Memory": 2000
                },
                "EnvironmentVariables": {},
                "ImageId": "img-xxxx",
                "StdoutRedirectPath": "oss://your-bucket/batch_python_sdk/logs/",
                "StderrRedirectPath": "oss://your-bucket/batch_python_sdk/logs/"
            }
        },
        "Dependencies": {}
    }
}'''

job_desc = JobDescription(job_json)

print job_desc.JobName
print job_desc.JobTag
print job_desc.TaskDag
print job_desc.Description
print job_desc.Priority

print job_desc

(2) TaskDag类型

参数说明:

参数

类型

描述

properties

dict, str, TaskDag object

所有任务的映射以及任务间依赖关系的描述信息

属性说明:

序号

属性

类型

描述

1.

TaskDescMap

dict

所有任务名与任务描述的映射信息

2.

Dependencies

dict

所有任务间的依赖关系

方法说明 :

序号

方法

描述

1.

add_task

增加一个任务

2.

get_task

通过任务名获取任务信息

3.

delete_task

删除某个任务

  • 可以通过属性赋值的方式提供任务信息, 如下:

e.g.

# Refer to the TaskDescription class to have a look at how to create a new task.
find_task = ...

task_dag = TaskDag()
task_dag.TaskDescMap = {
    'Find': find_task
}
task_dag.Dependencies = {}
  • 也可以通过类方法来增加任务信息,如下:

e.g.

# Refer to the TaskDescription class to have a look at how to create a new task.
find_task = ...

task_dag = TaskDag()
task_dag.add_task(task_name='Find', task=find_task)
task_dag.Dependencies = {}

(3) TaskDescription 类

参数说明:

参数

类型

描述

properties

dict, str, TaskDescription object

单个任务的描述信息

属性说明:

序号

属性

类型

描述

1.

PackageUri

str

用户的可执行程序包路径,应该是一个OSS路径。

2.

ProgramName

str

当前task对应的需要执行的用户的主程序名称

3.

ProgramType

str

用户程序的类型, 现阶段仅支持python、php两种,近期将支持java

4.

ProgramArguments

str

用户程序的命令行参数

5.

ImageId

str

作业使用的镜像ID,可以通过list_images()获取

6.

InstanceCount

str

任务中实例的个数,正数

7.

Timeout

int

设置任务中的一个实例的最长执行时间(超时时间),范围为[1,86400],单位为秒。

8.

EnvironmentVariables

dict

环境变量

9.

StdoutRedirectPath

str

用户程序标准输出路径

10.

StderrRedirectPath

str

用户程序标注出错路径

11.

ResourceDescription

ResourceDescription object

任务资源需求描述信息

12.

OssMapping

dict

NFS挂载功能从OSS存储到本地磁盘的映射关系描述

13.

OssMappingLock

bool

布尔型变量,用来确定NFS挂载服务是否支持网络文件锁。如果设置为true,则会开启网络锁服务,为文件锁提供后端支持

14.

OssMappingLocale

str

OSS上的Object统一采用UTF-8编码命名,这个参数可以决定挂载后使用的本地字符集。

e.g.

find_task = TaskDescription()
# Refer to the ResourceDescription class to have a look at how to create a resource description.
# Default set cpu needs to 800 and memory needs to 2000.
resource = ResourceDescription()

find_task.PackageUri = 'oss://your-bucket/batch-python-sdk/worker.tar.gz'
find_task.ProgramName = 'find_prime_worker.py'
find_task.ProgramType = 'python'
find_task.Priority = 0
find_task.ImageId = 'img-xxxx'
find_task.InstanceCount = 1
find_task.EnvironmentVariables = {}
find_task.StdoutRedirectPath = 'oss://your-bucket/batch-python-sdk/logs/'
find_task.StderrRedirectPath = 'oss://your-bucket/batch-python-sdk/logs/'
find_task.ResourceDescription = resource

# You can now add this task description to a TaskDag object through its add_task method.

(4) ResourceDescription 类

参数说明:

参数

类型

描述

properties

dict, str, ResourceDescription

资源需求描述信息

属性说明:

序号

属性

类型

描述

1.

Cpu

int

单个实例所耗 CPU,100 对应 1 个 CPU,范围为[800,2400]

2.

Memory

int

单个实例所需内存,单位 MB,范围为[2000,65536]

e.g.

resource = ResourceDescription()

resource.Cpu = 16
resource.Memory = 2000

# You can add this description to a task description now.
...

2.2 get_job_description

参数说明:

参数

类型

描述

job

CreateResponse, str

作业ID

返回值说明:

说明

get_job_description方法返回一个GetResponse对象,封装了JobDescription对象的所有接口和属性。 请参阅上节中JobDescription类的描述,了解JobDescription对象的属性.

e.g.

try:
    # Get a Client object.
    client = Client(...
    ...

    # Job ID.
    job = 'job-xxxx'
    # Get job description, it returns a GetResponse object.
    # You can use job_desc just like a JobDescription object.
    job_desc = client.get_job_description(job)
    print(job_desc.JobName, job_desc.TaskDag, job_desc.Priority)
except ClientError, e:
    print(e)

2.3 update_job_priority

说明

当作业的状态为Stopped和Failed才可以调用该接口。

参数说明:

参数

类型

描述

job

CreateResponse object, str

作业ID

priority

int

作业优先级, [0,1000]范围内的整数指定, 优先级数值越高表示作业调度时的优先级越高

返回值说明:

说明

update_job_priority 方法将返回一个 ActionResponse 对象, ActionResponse仅提供了request ID和状态码两个属性。

e.g.

try:
    # Get a Client object.
    client = Client(...
    ...

    # Job ID.
    job = 'job-xxxx'
    new_priority = 200
    # Get run-time infromation of the job.
    job_detail = client.get_job(job)
    if job_detail.State == 'Stopped':
        # Only the priority of a stopped job can be modified.
        client.update_job_priority(job, new_priority)
    job_detail = client.get_job(job)
    assert job_detail.Priority == new_priority
except ClientError, e:
    print(e)

2.4 stop_job

说明

当作业的状态为Waiting或Running,才可以调用该接口。

参数说明:

属性

类型

描述

job

CreateResponse, str

作业ID

返回值说明:

说明

stop_job方法将返回一个 ActionResponse 对象, ActionResponse仅提供了request ID和状态码两个属性。

e.g.

try:
    # Get a Client object.
    client = Client(...
    ...

    # Job ID.
    job = 'job-xxxx'
    job_detail = client.get_job(job)
    if job_detail.State in ['Waiting', 'Running']:
        # Only running or waiting jobs can be stopped.
        client.stop_job(job)
    job_detail = client.get_job(job)
    assert job_detail.State == 'Stopped'
except ClientError, e:
    print(e)

2.5 start_job

说明

当作业的状态为Stopped或者Failed,才可以调用该接口。

  • 当 Failed 状态的作业重启之后,已经运行成功的 Instance 不会重新运行。

参数说明:

属性

类型

描述

job

CreateResponse, str

作业ID

返回值说明:

说明

start_job方法将返回一个 ActionResponse 对象, ActionResponse仅提供了request ID和状态码两个属性。

e.g.

try:
    # Get a Client object.
    client = Client(...
    ...

    # Job ID.
    job = 'job-xxxx'
    job_detail = client.get_job(job)
    if job_detail.State == 'Stopped':
        # Only stopped job can be restarted.
        client.start_job(job)
    job_detail = client.get_job(job)
    assert job_detail.State in ['Waiting', 'Running']
except ClientError, e:
    print(e)

2.6 delete_job

说明

当作业的状态为Stopped,Terminated或Failed,才可以调用该接口。

参数说明:

属性

类型

描述

job

CreateResponse, str

作业ID

返回值说明:

说明

delete_job方法将返回一个 ActionResponse 对象, ActionResponse仅提供了request ID和状态码两个属性。

e.g.

try:
    # Get a Client object.
    client = Client(...
    ...

    # Job ID.
    job = 'job-xxxx'
    client.delete_job(job)
except ClientError, e:
    print(e)

2.7 get_job

参数说明:

属性

类型

描述

job

CreateResponse, str

作业ID

返回值说明:

说明

get_job方法返回一个 GetResponse 对象,它封装了 Job 对象的所有接口和属性 。 请参阅Job类的描述,了解Job对象的属性。

e.g.

try:
    # Get a Client object.
    client = Client(...
    ...

    job = 'job-xxxx'

    # Get job run-time information, it returns a GetResponse object.
    # You can use job_detail just like a Job object.
    job_detail = client.get_job(job)
    print(job_detail.State)
    ...
except ClientError, e:
    print(e)

(1) Job 类

参数说明:

参数

类型

描述

properties

dict, str, TaskDag

作业的当前状态信息

属性说明:

序号

属性

类型

描述

1.

JobId

str

作业ID

2.

JobName

str

作业名称

3.

Description

str

作业的简要描述

4.

Priority

int

作业优先级

5.

State

str

作业的运行状态

6.

OwnerId

int

owner用户账号的阿里云ID

7.

CreateTime

int

作业的创建时间,单位:秒

8.

StartTime

int

作业的开始时间,单位:秒, 如果还在Waiting状态,则为0

9.

EndTime

int

作业的结束时间,单位:秒, 如果还没结束,则为0

10.

NumTotalTask

int

作业的任务总数

11.

NumFinishedTask

int

运行完成的任务总数

12.

NumFailedTask

int

运行失败的任务总数

13.

NumWaitingTask

int

等待中的任务数

14.

NumRunningTask

int

运行中的任务数

15.

NumStoppedTask

int

停止的任务数

16.

NumTotalInstance

int

作业的实例总数

17.

NumFinishedInstance

int

运行完成的实例总数

18.

NumFailedInstance

int

运行失败的实例总数

19.

NumWaitingInstance

int

等待中的实例总数

20.

NumRunningInstance

int

运行中的实例总数

21.

NumStoppedInstance

int

停止的实例总数

2.8 list_jobs

返回值说明:

说明

list_jobs方法返回一个 ListResponse 对象, 是Job对象的集合,可以像使用list对象一样使用它。 请参阅上节中Job类的描述,了解Job对象的属性。

e.g.

try:
    # Get a Client object.
    client = Client(...
    ...

    # Get a list of all jobs owned by the user.
    job_list = client.list_job_status()
    for job_detail in job_list:
        print(job_detail.JobId, job_detail.State, job_detail.StartTime)
except ClientError, e:
    print(e)

2.9 list_tasks

参数说明:

属性

类型

描述

job

CreateResponse, str

作业ID

返回值说明:

说明

list_tasks方法将返回一个ListResponse 对象, 是一个Task对象的集合,可以像使用list对象一样使用它。 请参阅Task类型的描述,了解Task对象的属性。

e.g.

try:
    # Get a Client object.
    client = Client(...
    ...

    # Job ID.
    job = 'job-xxxx'
    indent = ' '*4

    task_list = client.list_tasks(job)
    for task_detail in task_list:
        print(task_detail.TaskName, task_detail.State)
        for instance_detail in task.InstanceStatusList:
            print(instance_detail.InstanceId, instance_detail.State)
except ClientError, e:
    print(e)

(1) Task 类

参数说明:

参数

类型

描述

properties

dict, str, Task

任务的当前状态信息

属性说明:

序号

属性

类型

描述

1.

TaskName

str

任务名称

2.

State

str

任务的运行状态

3.

StartTime

int, str

任务开始时间,单位:秒,如果还在Waiting状态,则为0

4.

EndTime

int, str

任务结束时间, 单位:秒, 如果还没结束,则为0

5.

InstanceList

list

任务所包含的实例集合,是Instance对象的集合

(2) Instance 类

参数说明:

参数

类型

描述

properties

dict, str, Instance object

实例状态信息

属性说明:

序号

属性

类型

描述

1.

InstanceId

int

实例ID

2.

State

str

实例的运行状态

3.

StartTime

int, str

实例的开始时间,单位:秒, 如果还在Waiting状态,则为0

4.

EndTime

int, str

实例的结束时间,单位:秒, 如果还没结束,则为0

2.10 list_images

返回值说明:

说明

list_images方法将返回一个ListResponse对象, 是一个Image对象的集合,可以像使用list对象一个使用它。 请参阅Image类型的描述,了解Image对象的属性。

e.g.

try:
    # Get a Client object.
    client = Client(...
    ...

    image_list = client.list_images()
    for image_detail in image_list:
        print(image_detail.ImageId, image_detail.ImageName)
except ClientError, e:
    print(e)

(1) Image 类

参数说明:

参数

类型

描述

properties

dict, str, Image

镜像的状态信息

属性说明:

序号

属性

类型

描述

1.

Platform

str

镜像运行环境类型:Windows或者Linux

2.

ImageId

str

镜像的ID

3.

ImageName

str

镜像名称

4.

Description

str

镜像的简短描述