在每秒进行多次呼叫时,Google API客户端随机使用错误403进行授权失败

时间:2014-01-29 19:03:24

标签: google-bigquery google-api-client

我尝试使用Google API客户端进行Google Big Query调用时,看到403 RANDOMLY(有些时候有效并且其他时间失败)。

为了提供更多的上下文,我每秒5-10次进行几次api调用,所以当我按顺序进行调用时,我没有得到错误。但是,当我每秒进行几次调用时,我收到错误。我在这里检查了BigQuery速率限制:https://developers.google.com/bigquery/quota-policy 它说我可以发出多达20个并发查询。我很确定,我没有达到速率限制。

我会感谢任何有系统地解决这个问题的建议或建议。 谢谢, NAVNEET

以下是代码:

    def initialize
     client = Google::APIClient.new
     path_to_key_file = "/Users/abcyoo/crazy/crazy-google-client-key.p12" #dev
     passphrase = "XXXXXXXX"
     key = Google::APIClient::PKCS12.load_key(path_to_key_file, passphrase)
     service_account = Google::APIClient::JWTAsserter.new(
         '1063766308008@developer.gserviceaccount.com',
         'https://www.googleapis.com/auth/bigquery',
         key)
         client.authorization = service_account.authorize
     client.authorization.fetch_access_token!
     bq = client.discovered_api("bigquery", "v2")
     return client,bq
   end

以下是我收到的错误消息:

    Signet::AuthorizationError (Authorization failed.  Server message:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>Google Accounts</title><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0" /><link rel='stylesheet' type='text/css' href='https://ssl.gstatic.com/accounts/o/1893590695-error_page_css_ltr.css'>


         403。这是一个错误。

您无权执行此请求。这就是我们所知道的。

):

    signet (0.4.5) lib/signet/oauth_2/client.rb:875:in `fetch_access_token'
    signet (0.4.5) lib/signet/oauth_2/client.rb:888:in `fetch_access_token!'
     app/controllers/application_controller.rb:105:in `initialize'

1 个答案:

答案 0 :(得分:1)

你是否每秒呼叫client.discoverty_api 5-10次?如果是这样,那可能是限制你的速度。你可以每个线程调用一次或一次并重用bigquery服务吗?