【问题标题】:SwifType Rate limit exceeded超过 SwifType 速率限制
【发布时间】:2019-10-18 23:18:49
【问题描述】:

我目前有一个模拟账户。我正在尝试为我的雇主使用 SwifType 制作 POC。我们有一个非常大的数据库,每 1 小时索引一次,并创建一个 JSON 文件。我认为与 Elastic 的集成将非常容易,因为它只是在生成字符串时发送字符串的问题。我使用 PHP Curl 并获得了与 API 的连接。代码发出部分数据,然后出现“超出速率限制”错误。

如何解决该错误并将完整的 JSON 编入索引?

我的代码现在是这样的:

// SENDING DATA TO ELASTIC SEARCH
$arr = array_change_key_case($arr, CASE_LOWER); // Keys to lower case
$arrlist = array_chunk($arr,100); // Split to chunks of 100
foreach($arrlist as $key=>$arr){
    $json = json_encode($arr); // Making the JSON string from the array
    $ch = curl_init('https://host-***.api.swiftype.com/api/as/v1/engines/***/documents');                                                                      
    curl_setopt($ch, CURLOPT_POST, 1);                                                                     
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);                                                                  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);      
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                                                                
    $headers = array();
    $headers[] = 'Content-Type: application/json';
    $headers[] = 'Authorization: Bearer private-***';
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);

    echo $result."<hr>";
}

另外,考虑到这段代码每小时都会被索引,如果我一遍又一遍地发送相同的数据,它会更新前一个还是复制它?如果是这样,我该如何处理?

【问题讨论】:

  • 有一个header you can inspect 以了解您在限制方面的立场,您应该检查它,采取行动并后退以确保您没有超过该限制。
  • “退避”的最佳策略是什么?保存它停止的地方并在下一次执行时从那里继续?或者使用 sleep() 和一定的时间然后继续?限速重置时间是多少?

标签: elasticsearch swiftype


【解决方案1】:

您需要查看X-RateLimit-Remaining 标头(请参阅详细信息here),当它达到0(或接近它)或收到429 响应时,您sleep() 然后重试。如果您连续收到多个 429 响应,我建议您使用 exponential backoff(每次收到 429 时睡眠时间加倍,请求成功后将其重置为默认值)。

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多