首页 > 解决方案 > Perl:如何在处理下一个之前等待 curl 步骤完成

问题描述

perl 如何在处理下一步之前等待一个步骤?

例如

我有一个命令(检查先前数据上传步骤的状态):

curl -H "Content-Type: application/json" -H "Authorization: Bearer DS_12345" -X GET https://api.xxx

回应是:

{
  "method":"a",
  "users":["user@xxx.com "],
  "status":"DONE",
  "export-url":"https://api.xxx/v1/export/DP_6789xxx"
}

状态可以是:“DONE”、“FAIL”或“PROCESSING”。当状态为“PROCESSING”时,我不想退出程序并再次运行它。相反,我想等到状态为“DONE”,然后通过上一步的响应“export-url”:“ https://api.xxx/v1/export/DP_6789xxx ”进行下一步。(当为“FAIL”时,报告并退出)

curl -H "Content-Type: application/json" -H "Authorization: Bearer DS_12345" -X GET https://api.xxx/v1/export/DP_6789xxx?view=xml

感谢你的回复。

标签: perlcurl

解决方案


使用 while 循环:

my $result = 'PROCESSING';
while ($result eq 'PROCESSING') {
    my $response = ... # 
    $result = $response->{status};
    sleep 5;
}

推荐阅读