Curl 请求在五分钟时意外退出

Curl 请求在五分钟时意外退出

我正在使用 shell 脚本来触发一个curl 请求,该请求会删除我的Elasticsearch 集群中某种类型的所有文档。如果成功,Logstash 将启动并尝试重新索引已删除类型的文档。

printf "\n%s\n" "Sending delete request..."

RESPONSE=$(curl --max-time 600 -XPOST 
"https://mycluster.com:9243/locations/ca/_delete_by_query?conflicts=proceed" -H 
'Content-Type: application/json' -d' { "query": { "match_all": {} } }' 
--user user:password)

if [[ $RESPONSE == *"deleted"* ]]; then
  echo $RESPONSE
  printf "\n%s\n" "Delete successful, starting Logstash..."
  cd /home/denroot/EP-logstash && bin/logstash -f /home/denroot/EP-
  logstash-configs/locations/create/california.config
else
  echo $RESPONSE
  printf "\n%s\n" "Delete failed, shutting down..."
fi

我遇到的问题是这种特定类型有超过 500 万个文档。 Elasticsearch 删除任务无法在 5 分钟过去之前完成,并且我的 curl 请求以退出代码 0 退出。我似乎无法使用 --max-time 来阻止这种情况发生。通常,当 Elasticsearch 中的删除任务完成时,它会发回一个 JSON 响应正文,我需要该正文才能使控制流逻辑正常工作。任何防止这个 5 分钟退出问题的帮助将不胜感激,因为我似乎找不到先例。

答案1

您的脚本应在 10 分钟后退出。

尝试增加(或删除)最大时间以解除该限制

如果服务器端规定了 5 分钟的超时时间,您可以尝试多次运行 curl 命令,直到收到预期的输出/退出代码。

相关内容