2016-03-21 2 views
2

Я пытаюсь установить заданный пользователь тайм-аут на сообщение тянуть с «returnImmediately» = False:Прицепного таймаут с Google-API-питоном-клиентом

PUBSUB_SCOPES = ['https://www.googleapis.com/auth/pubsub'] 

    credentials = oauth2client.GoogleCredentials.get_application_default() 
    if credentials.create_scoped_required(): 
     credentials = credentials.create_scoped(PUBSUB_SCOPES) 

    http = httplib2.Http(timeout=timeout) 
    credentials.authorize(http) 

    return discovery.build('pubsub', 'v1', http=http) 

Когда тайм-аут < 90 секунд я получаю следующее ошибки:

resp = client.projects().subscriptions().pull(subscription=subscription, body=body).execute() 
    File "venv\lib\site-packages\oauth2client\util.py", line 137, in positional_wrapper 
    return wrapped(*args, **kwargs) 
    File "venv\lib\site-packages\googleapiclient\http.py", line 755, in execute 
    method=str(self.method), body=self.body, headers=self.headers) 
    File "venv\lib\site-packages\googleapiclient\http.py", line 93, in _retry_request 
    resp, content = http.request(uri, method, *args, **kwargs) 
    File "venv\lib\site-packages\oauth2client\client.py", line 622, in new_request 
    redirections, connection_type) 
    File "venv\lib\site-packages\httplib2\__init__.py", line 1609, in request 
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) 
    File "venv\lib\site-packages\httplib2\__init__.py", line 1351, in _request 
    (response, content) = self._conn_request(conn, request_uri, method, body, headers) 
    File "venv\lib\site-packages\httplib2\__init__.py", line 1307, in _conn_request 
    response = conn.getresponse() 
    File "C:\python27\Lib\httplib.py", line 1074, in getresponse 
    response.begin() 
    File "C:\python27\Lib\httplib.py", line 415, in begin 
    version, status, reason = self._read_status() 
    File "C:\python27\Lib\httplib.py", line 371, in _read_status 
    line = self.fp.readline(_MAXLINE + 1) 
    File "C:\python27\Lib\socket.py", line 476, in readline 
    data = self._sock.recv(self._rbufsize) 
    File "C:\python27\Lib\ssl.py", line 714, in recv 
    return self.read(buflen) 
    File "C:\python27\Lib\ssl.py", line 608, in read 
    v = self._sslobj.read(len or 1024) 
SSLError: ('The read operation timed out',) 

Спасибо.

ответ

2

К сожалению, эти клиентские библиотеки не поддерживают пересылку значений таймаута на сервер; однако у нас есть just announced the gRPC client libraries, которые правильно передают срок на сервер.

В качестве обходного пути для текущих библиотек либо используйте returnImmediately = true, либо установите крайний срок более 90 секунд, как следует из вашего вопроса.