跳到主要内容

异步处理在使用作业对象时的工作原理

发出设计为异步运行的 API 请求后,系统会创建一个作业对象并将其返回给调用者。此作业描述并锚定处理该请求的后台任务。根据 HTTP 状态代码,必须检索作业的状态以确定请求是否成功。

请参阅 ONTAP API 在线文档页面,以确定哪些 API 调用设计为异步执行。

控制请求的处理方式

可以使用 return_timeout 查询参数控制如何处理异步的 API 调用。使用此参数时有两种可能的结果。

计时器在请求完成之前到期
对于有效的请求,ONTAP 将 202 HTTP 状态代码随作业对象一起返回。必须检索作业的状态以确定请求是否已成功完成。
请求在计时器到期之前完成
如果请求有效并在时间到期之前成功完成,则 ONTAP 将 200 HTTP 状态代码随作业对象一起返回。因为请求是同步完成的(根据代码 200 可知),所以不需要检索作业状态。
return_timeout 参数的默认值为零秒。因此,如果不包含该参数,则始终会为有效的请求返回 202 HTTP 状态代码。

查询与 API 请求关联的作业对象

HTTP 响应中返回的作业对象包含多个属性。可以在后续 API 调用中查询 state 属性以确定是否已成功完成请求。作业对象始终处于以下状态之一:

非终端状态
  • 已排队

  • 正在运行

  • 已暂停

终端状态
  • 成功

  • 失败

发出异步请求的一般过程

可以使用以下高度概括的过程来完成异步 API 调用。此示例假设不使用 return_timeout 参数,或者在后台作业完成之前时间到期。

  1. 发出设计为异步执行的 API 调用。

  2. 接收一个指示已接受有效请求的 HTTP 响应 202。

  3. 从响应正文中提取作业对象的标识。

  4. 在定时循环中,在每个周期内执行以下操作:

    1. 获取作业的当前状态。

    2. 如果作业处于非终端状态,再次执行循环。

  5. 作业到达终端状态(成功、失败)时停止。