1

Google App EngineからGoogle Cloud MLへのリクエスト(オンライン予測)を行っています(私はモデルを作成していませんでした)、時折例外が発生します。「HTTPレスポンスを待つ間に締め切りを超えました 完全なトレースここでは、「URLから:Google Cloud MLタイムアウトへのリクエスト

Deadline exceeded while waiting for HTTP response from URL: https://ml.googleapis.com/v1/projects/project-id/models/my-model/versions/v3:predict?alt=json (/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py:1552) 
Traceback (most recent call last): 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in __call__ 
    rv = self.handle_exception(request, response, e) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1529, in __call__ 
    rv = self.router.dispatch(request, response) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher 
    return route.handler_adapter(request, response) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1102, in __call__ 
    return handler.dispatch() 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 572, in dispatch 
    return self.handle_exception(e, self.app.debug) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch 
    return method(*args, **kwargs) 
    File "/base/data/home/apps/s~project-id/1.402312581449917691/main.py", line 90, in post 
    response = predict(batch_obj=batch_data_obj) 
    File "/base/data/home/apps/s~project-id/1.402312581449917691/run_cloud_predict.py", line 88, in predict 
    response = request.execute() 
    File "/base/data/home/apps/s~project-id/1.402312581449917691/lib/oauth2client/util.py", line 135, in positional_wrapper 
    return wrapped(*args, **kwargs) 
    File "/base/data/home/apps/s~project-id/1.402312581449917691/lib/googleapiclient/http.py", line 835, in execute 
    method=str(self.method), body=self.body, headers=self.headers) 
    File "/base/data/home/apps/s~project-id/1.402312581449917691/lib/googleapiclient/http.py", line 162, in _retry_request 
    resp, content = http.request(uri, method, *args, **kwargs) 
    File "/base/data/home/apps/s~project-id/1.402312581449917691/lib/oauth2client/client.py", line 631, in new_request 
    redirections, connection_type) 
    File "/base/data/home/apps/s~project-id/1.402312581449917691/lib/httplib2/__init__.py", line 1659, in request 
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) 
    File "/base/data/home/apps/s~project-id/1.402312581449917691/lib/httplib2/__init__.py", line 1399, in _request 
    (response, content) = self._conn_request(conn, request_uri, method, body, headers) 
    File "/base/data/home/apps/s~project-id/1.402312581449917691/lib/httplib2/__init__.py", line 1355, in _conn_request 
    response = conn.getresponse() 
    File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/gae_override/httplib.py", line 526, in getresponse 
    raise HTTPException(str(e)) 
HTTPException: Deadline exceeded while waiting for HTTP response from URL: https://ml.googleapis.com/v1/projects/project-id/models/my-model/versions/v3:predict?alt=json 

は今、私はGoogleのApp Engineは、応答のために60秒の制限を持っていることを知って、それは私がリクエストがタスクキューをwithingやっている理由です。

URLFETCH_DEADLINE = 3600 
urlfetch.set_default_fetch_deadline(URLFETCH_DEADLINE) 
socket.setdefaulttimeout(URLFETCH_DEADLINE) 

私はそれは時々タイムアウトは70代(69.9、70、70.1等)の周りに起こっていることは興味深い。この

import httplib2 
from googleapiclient import discovery 
from oauth2client import service_account 

credentials = service_account.ServiceAccountCredentials.from_json_keyfile_name('credentials-file', scopes) 
http = httplib2.Http(timeout=36000) 
http = credentials.authorize(http) 

ml = discovery.build('ml', 'v1', http=http) 
request = ml.projects().predict(name=predict_ver_name, body=request_data) 

のようなAPIクライアントを構築し、時には120S(119.8、周り午前:私はまた、物事を以下試してみました120.1など)、これはおそらく内部のクラウドMLの取引でもっとやらなければならないと私に伝えている。 私は並行して数十のリクエストをタスクキューで処理しています。応答時間は数秒から〜110秒です。 誰かが似たような経験をしている場合や、これを解決する方法、つまり締め切りの原因を教えてください。

答えて

0

あなたの経験を投稿していただきありがとうございます。 - いくつかの起動コストがあり、要求に応じて複数のサーバーを起動する必要があるかもしれません。 - 予測しようとしているモデルのサイズは?モデルが大きいほど、起動コストが高くなる傾向があります。

ありがとうございました。

関連する問題