简单开始

最近更新时间:2019-10-10 15:52:58

操作场景

您可通过本文快速了解 Batch 的使用方法及计算能力。

前提条件

请根据 前置准备 里的说明完成准备,并了解如何配置自定义信息里的通用部分。

查看 Demo

说明:

请在 前置准备 中修改 1_SimpleStart.py 文件自定义信息的通用部分。

使用编辑器打开 1_SimpleStart.py 文件

# custom (Change to your info)
imageId = "img-m4q71qnf"
Application = {
    "DeliveryForm": "LOCAL",
    "Command": " python -c \"fib=lambda n:1 if n<=2 else fib(n-1)+fib(n-2); print(fib(20))\" "
}
StdoutRedirectPath = "your cos path"
StderrRedirectPath = "your cos path"

自定义部分除 Application 以外,都已在前置准备中说明, Application 中配置请参考下表:

配置项 描述
DeliveryForm 应用程序的交付方式,包括软件打包、容器镜像、CVM 内部直接运行三种,这里 LOCAL 代表的是 CVM 内部直接运行。
Command 任务启动命令,这里执行的是一段 Python 脚本。以1为起点,将斐波拉契数列的前20个数字求和并输出到 StdOutput 里。

提交作业

执行以下命令,执行 Python 脚本。
Demo 中已经通过 Python 脚本 + Batch 命令行工具的形式封装了提交作业流程。

python 1_SimpleStart.py

返回结果如下所示,则表示提交成功。

{
    "RequestId": "393292f4-5583-48ad-a9f5-f673138ea637", 
    "JobId": "job-o0xxxxxq7"
}

若未提交成功,请检查返回值排查错误,也可以通过 联系我们 中的 QQ 群向管理员咨询。

查看状态

  • 执行以下命令,通过 DescribeJob 查看执行状态:
    $ tccli batch DescribeJob --version 2017-03-12 --JobId job-xxx
    说明:

    --JobId 请替换成 提交作业 中的返回的 JobId。

    返回信息如下(部分已省略):
    {
      "EndTime": "2019-10-08T04:06:58Z", 
      "JobState": "SUCCEED", 
      "TaskInstanceMetrics": {
          ...
      }, 
      "Zone": "ap-guangzhou-2", 
      "TaskMetrics": {
          ...
      }, 
      "JobName": "TestJob", 
      "Priority": 1, 
      "RequestId": "7a5f4c94-1357-486c-9c48-8286ba01b5b2", 
      "TaskSet": [
          ...
      ], 
      "StateReason": null, 
      "JobId": "job-o0j1k0q7", 
      "DependenceSet": [], 
      "CreateTime": "2019-10-08T04:05:54Z"
    }
  • 返回信息包含下列常见执行状态:
    • STARTING:启动中
    • RUNNING:执行中
    • SUCCEED:执行成功
    • FAILED:执行失败

查看结果

  1. 登录对象存储控制台,单击左侧导航栏中的【存储桶列表】。
  2. 选择已创建的 Bucket ID>【文件列表】>logs 文件,执行结果均保存在 logs 文件中。如下图所示:
    • 成功时请查看标准输出 stdout.job-xxx.xxxx.0.log,内容如下:
      6765
    • 失败时请查看标准错误 stderr.job-xxx.xxxx.0.log,可能的内容如下:
      /bin/sh: -c: line 0: syntax error near unexpected token `('
      /bin/sh: -c: line 0: ` python -c \"fib=lambda n:1 if n<=2 else fib(n-1)+fib(n-2); print(fib(20))\" '