Bash脚本:连续两次调用curl,只执行一次

时间:2014-11-27 21:51:35

标签: bash curl http-post

我有一个bash脚本,其中包含两个连续的curl调用,比如这个

#!/bin/bash

# Stuff...

curl -X POST -d "data=<some_post_data>" http://url/to/rest/api

curl -X POST -d "data=<more_post_data>" http://url/to/rest/api

# More stuff

我的问题是只是调用1做某事。第一次通话,需要 10分钟才能完成:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   712    0   419    0   293      0      0 --:--:--  0:10:05 --:--:--    28

但第二个,仅用3秒就结束了:

 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   184  100    51  100   133     15     41  0:00:03  0:00:03 --:--:--    41

查看后端日志(我的意思是,被调用的端点)看起来第二个调用永远不会达到其目标。我试过在两次通话之间睡30秒。没效果。

奇怪的是,如果我评论第一个电话,第二个电话正常呼叫(大约需要6分钟)

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   192    0    59    0   133      0      0 --:--:--  0:05:47 --:--:--     0

总体而言:我确实有几个卷曲调用(超过2个)的序列,但问题出在这两个调用之间。在那之前,所有以前的呼叫都正常运行。

有关正在发生的事情的任何想法?

1 个答案:

答案 0 :(得分:0)

好的,问题与cURL无关。基本上,后端会在将结果发送到实际数据存储之前对结果进行缓存。所以,第二个cURL没有找到第一个存储的数据(它们是连接的,真的,我后来意识到)。我通过在两个电话之间休眠来修复它。因此,缓存系统有足够的时间来转储数据。