全部产品
云市场
云游戏

异步任务状态和结果

更新时间:2020-06-28 15:25:09

本文档介绍查询异步任务状态进度(GetJobStatus)和结果(GetAsyncResult)的语法及示例。

功能描述

异步接口调用API接口后,返回的并不是真正的请求结果,您需要保存返回结果中的JobId,然后调用GetAsyncJobResult来获取真正的请求结果。
以下均为异步接口,均需要调用GetAsyncJobResult来获取真实的请求结果。

注意:任务结果保留1个小时(从提交任务计算)

JobId: 需要保证全局唯一,建议使用UUID

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称 类型 是否必选 示例值 描述
Action String GetJobStatus 要执行的操作。取值:[GetJobStatus, GetAsyncResult]。
JobId String 001 异步接口返回的JobId,输入后可以查询异步接口的真实请求结果。

返回数据

GetJobStatus

名称 类型 示例值 描述
Status String PROCESS_SUCCESS 参考下面的任务状态
Completed bool true Job是否已经结束(不区分成功或失败)
Progress float 90.0 进度百分比,取值[0.0, 100.0]
Message String some error 任务处理失败的错误信息
TimeToLive int 600 超时剩余时间,默认600秒
TotalUsedTime int 50 处理耗时,单位秒

GetAsyncResult

名称 类型 示例值 描述
Status String PROCESS_SUCCESS 参考下面的任务状态
Completed bool true Job是否已经结束(不区分成功或失败)
Progress float 90.0 进度百分比,取值[0.0, 100.0]
Code String 0 任务处理错误码
Message String some error 任务处理失败的错误信息
TotalUsedTime int 50 处理耗时,单位秒
Result Map 任务结果,需要转换成原API的Respone.Data

任务状态

  1. enum AsyncJobStatus {
  2. /**
  3. * 任务排队中
  4. */
  5. QUEUING,
  6. /**
  7. * 异步处理中
  8. */
  9. PROCESSING,
  10. /**
  11. * 处理成功
  12. */
  13. PROCESS_SUCCESS,
  14. /**
  15. * 处理失败
  16. */
  17. PROCESS_FAILED,
  18. /**
  19. * 任务超时未处理完成
  20. */
  21. TIMEOUT_FAILED,
  22. /**
  23. * 超过最大重试次数
  24. */
  25. LIMIT_RETRY_FAILED
  26. }

示例

进度查询 GetJobStatus

情景:任务处理中

  1. {
  2. "RequestId": "A620466A-5C7F-4061-xxxx-1A45B129491C",
  3. "Data": {
  4. "Status": "PROCESSING",
  5. "BatchSize": 1,
  6. "Progress": 0,
  7. "TimeToLive": 593,
  8. "TotalUsedTime": 7,
  9. "Completed": false
  10. },
  11. "Code": "0"
  12. }

情景:任务处理失败

  1. {
  2. "RequestId": "B504322D-FF0A-4487-xxxx-72BFBADADCEE",
  3. "Message": "400:not supported region.",
  4. "Data": {
  5. "Status": "PROCESS_FAILED",
  6. "BatchSize": 1,
  7. "Progress": 100,
  8. "TimeToLive": -1,
  9. "Message": "400:not supported region.",
  10. "TotalUsedTime": 0,
  11. "Completed": true
  12. },
  13. "Code": "0"
  14. }

情景:任务处理成功

  1. {
  2. "RequestId": "4FF66EA0-DC6C-4317-xxxx-B20871E70BA9",
  3. "Message": "",
  4. "Data": {
  5. "Status": "PROCESS_SUCCESS",
  6. "BatchSize": 1,
  7. "Progress": 100,
  8. "TimeToLive": -1,
  9. "Message": "",
  10. "TotalUsedTime": 42,
  11. "Completed": true
  12. },
  13. "Code": "0"
  14. }

任务结果 GetAsyncResult

情景:处理成功结果

  1. {
  2. "RequestId": "EE9820D7-5CAD-46C2-xxxx-D77B37278C54",
  3. "Message": "",
  4. "Data": {
  5. "Status": "PROCESS_SUCCESS",
  6. "Progress": 100,
  7. "Message": "",
  8. "TotalUsedTime": 42,
  9. "Completed": true,
  10. "Result": {
  11. "videoUrl": "http://algo-app-aic-vd-cn-shanghai-prod.oss-cn-shanghai.aliyuncs.com/video-delogo/2020-06-26-09/18%3A30-ExAnesXrPW4IDZCq.mp4?Expires=1593422310&OSSAccessKeyId=LTAI4G9FM6qs4yUhx9PDT45m&Signature=%2FbTbqQd9GDtHh7UKzBv5AsrLkuc%3D"
  12. }
  13. },
  14. "Code": "0"
  15. }

情景:请求参数错误

  1. {
  2. "RequestId": "3074D371-53F0-42E8-xxxx-07D9D95CBBBD",
  3. "Message": "not supported region.",
  4. "Data": {
  5. "Status": "PROCESS_FAILED",
  6. "Progress": 100,
  7. "Message": "not supported region.",
  8. "TotalUsedTime": 0,
  9. "Completed": true,
  10. "Code": "ParameterError"
  11. },
  12. "Code": "ParameterError"
  13. }

情景:结果缓存超时

  1. {
  2. "RequestId": "8BC3C5D8-6634-4CCC-xxxx-085457B20EC9",
  3. "Message": "not found this job, please resubmit again",
  4. "Data": {
  5. "Status": "TIMEOUT_FAILED",
  6. "Progress": 0,
  7. "Message": "not found this job, please resubmit again",
  8. "Completed": true
  9. },
  10. "Code": "0"
  11. }