クエリを作成するときに 403 User Rate Limit Exceeded エラーを受け取りましたが、超えていないことは確かです。過去に挿入でレートリミットに達したことがあり、ジョブリストに次のように反映されていました。
[errorResult] => Array ( [reason] => rateLimitExceeded [message] => レート制限を超えました: このプロジェクトのインポートが多すぎます)
しかし、この場合、ジョブリストはクエリを反映しておらず (エラーや完了もありません)、ジョブリストを調べても限界に達していないか、限界に近づいていました (同時クエリは 4 つ以下で、それぞれ処理中 692297 バイト)
私は請求を有効にしており、過去 28 日間で 2.5K のクエリしか作成していません。
編集:ユーザー制限は最大500.0リクエスト/秒/ユーザーに設定されています
編集:エラーコードを受け取りました
ユーザーレート制限を超えました
ユーザーレート制限を超えました
エラー 403
編集:クエリジョブを作成して結果を取得するために使用するコード
function query_data($project,$dataset,$query,$jobid=null){
$jobc = new JobConfigurationQuery();
$query_object = new QueryRequest();
$dataset_object = new DatasetReference();
$dataset_object->setProjectId($project);
$dataset_object->setDatasetId($dataset);
$query_object->setQuery($query);
$query_object->setDefaultDataset($dataset_object);
$query_object->setMaxResults(16000);
$query_object->setKind('bigquery#queryRequest');
$query_object->setTimeoutMs(0);
$ok = false;
$sleep = 1;
while(!$ok){
try{
$response_data = $this->bq->jobs->query($project, $query_object);
$ok = true;
}catch(Exception $e){ //sleep when BQ API not avaible
sleep($sleep);
$sleep += rand(0,60);
}
}
try{
$response = $this->bq->jobs->getQueryResults($project, $response_data['jobReference']['jobId']);
}catch(Exception $e){
//do nothing, se repite solo
}
$tries = 0;
while(!$response['jobComplete']&&$tries<10){
sleep(rand(5,10));
try{
$response = $this->bq->jobs->getQueryResults($project, $response_data['jobReference']['jobId']);
}catch(Exception $e){
//do nothing, se repite solo
}
$tries++;
}
$result=array();
foreach($response['rows'] as $k => $row){
$tmp_row=array();
foreach($row['f'] as $field => $value){
$tmp_row[$response['schema']['fields'][$field]['name']] = $value['v'];
}
$result[]=$tmp_row;
unset($response['rows'][$k]);
}
return $result;
}
他のレート制限はありますか? それともバグですか?
ありがとう!