App Engine: вызов API-файла.Create () занял слишком много времени и был отменен - PullRequest
1 голос
/ 08 февраля 2012

Когда я пытаюсь выполнить запись в blobstore, используя тот же пример, который приведен в документации (ниже), он работает каждый раз на сервере dev, но 100% времени завершает работу appppot с этой ошибкой: The API call file.Create() took too long to respond and was cancelled. Поиск в Google показывает, что этоэто редкая проблема, хотя некоторые сообщили об этом.Есть идеи, что здесь происходит?

Я использую Python 2.6 на сервере dev, поэтому, может быть, поэтому я не вижу этого во время разработки.

from __future__ import with_statement
from google.appengine.api import files

# Create the file
file_name = files.blobstore.create(mime_type='application/octet-stream')

# Open the file and write to it
with files.open(file_name, 'a') as f:
  f.write('data')

# Finalize the file. Do this before attempting to read it.
files.finalize(file_name)

# Get the file's blob key
blob_key = files.blobstore.get_blob_key(file_name)

Traceback:

The API call file.Create() took too long to respond and was cancelled.
Traceback (most recent call last):
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1516, in __call__
    rv = self.handle_exception(request, response, e)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1510, in __call__
    rv = self.router.dispatch(request, response)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1258, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1082, in __call__
    return handler.dispatch()
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 552, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 550, in dispatch
    return method(*args, **kwargs)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/main.py", line 43, in get
    file_name = files.blobstore.create(mime_type='text/html')
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/blobstore.py", line 69, in create
    return files._create(_BLOBSTORE_FILESYSTEM, params=params)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 491, in _create
    _make_call('Create', request, response)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 234, in _make_call
    rpc.check_success()
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 558, in check_success
    self.__rpc.CheckSuccess()
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 133, in CheckSuccess
    raise self.exception
DeadlineExceededError: The API call file.Create() took too long to respond and was cancelled.
Saved; key: __appstats__:082400, part: 41 bytes, full: 5691 bytes, overhead: 0.000 + 0.004; link: http://czongae.appspot.com/_ah/stats/details?time=1328696282404
<class 'google.appengine.runtime.apiproxy_errors.DeadlineExceededError'>: The API call file.Create() took too long to respond and was cancelled.
Traceback (most recent call last):
  File "/base/data/home/apps/s~czongae/1.356669185377832769/main.py", line 72, in <module>
    main()
  File "/base/data/home/apps/s~czongae/1.356669185377832769/main.py", line 69, in main
    app.run()
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1595, in run
    _webapp_util.run_wsgi_app(self)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/util.py", line 98, in run_wsgi_app
    run_bare_wsgi_app(add_wsgi_middleware(application))
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/util.py", line 118, in run_bare_wsgi_app
    for data in result:
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/appstats/recording.py", line 924, in appstats_wsgi_wrapper
    result = app(environ, appstats_start_response)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1524, in __call__
    response = self._internal_error(e)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1516, in __call__
    rv = self.handle_exception(request, response, e)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1510, in __call__
    rv = self.router.dispatch(request, response)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1258, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 1082, in __call__
    return handler.dispatch()
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 552, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/webapp2.py", line 550, in dispatch
    return method(*args, **kwargs)
  File "/base/data/home/apps/s~czongae/1.356669185377832769/main.py", line 43, in get
    file_name = files.blobstore.create(mime_type='text/html')
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/blobstore.py", line 69, in create
    return files._create(_BLOBSTORE_FILESYSTEM, params=params)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 491, in _create
    _make_call('Create', request, response)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 234, in _make_call
    rpc.check_success()
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 558, in check_success
    self.__rpc.CheckSuccess()
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 133, in CheckSuccess
    raise self.exception

1 Ответ

1 голос
/ 08 февраля 2012

Это не задокументировано в официальном руководстве.но попробуйте добавить exclusive_lock=True при открытии файла.Я думаю, что во время миграции моего магазина из M / S в HRD у меня возникла эта проблема.

http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/files/file.py#402

# Open the file and write to it
with files.open(file_name, 'a', exclusive_lock=True) as f:
  f.write('data')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...