Ошибка GAE (код ошибки 104) при создании нового BLOB-объекта - PullRequest
1 голос
/ 30 августа 2011

На GAE эта строка кода:

имя_файла = files.blobstore.create (mime_type = 'image / png')

падает Google.appengine.runtime.DeadlineExceededError

Вот полный код метода:

class UploadsHandler(JSONRequestHandler):
    def upload_blob(self, content, filename):
        file_name = files.blobstore.create(mime_type='image/png')

        file_str_list = split_len(content, 65520)

        with files.open(file_name, 'a') as f:
            for line in file_str_list:
                f.write(line)

        files.finalize(file_name)
        return files.blobstore.get_blob_key(file_name)

Сообщение журнала заканчивается:

С серьезной проблемой столкнулсяпроцесс, который обработал этот запрос, вызывая его выход.Это может привести к использованию нового процесса для следующего запроса к вашему приложению.Если вы часто видите это сообщение, вы можете выдавать исключения во время инициализации приложения.( Код ошибки 104 )

Полный стек ошибок:

<class 'google.appengine.runtime.DeadlineExceededError'>: 
Traceback (most recent call last):
  File "/base/data/home/apps/s~mockup-cloud/1.352909931378411668/main.py", line 389, in main
    util.run_wsgi_app(application)
  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 116, in run_bare_wsgi_app
    result = application(env, _start_response)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__
    handler.post(*groups)
  File "/base/data/home/apps/s~mockup-cloud/1.352909931378411668/main.py", line 339, in post
    original_key = "%s" % self.upload_blob(src)
  File "/base/data/home/apps/s~mockup-cloud/1.352909931378411668/main.py", line 268, in upload_blob
    file_name = files.blobstore.create(mime_type='image/png')
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/blobstore.py", line 68, in create
    return files._create(_BLOBSTORE_FILESYSTEM, params=params)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 487, in _create
    _make_call('Create', request, response)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/files/file.py", line 228, in _make_call
    rpc.wait()
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 533, in wait
    self.__rpc.Wait()
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 119, in Wait
    rpc_completed = self._WaitImpl()
  File "/base/python_runtime/python_lib/versions/1/google/appengine/runtime/apiproxy.py", line 131, in _WaitImpl
    rpc_completed = _apphosting_runtime___python__apiproxy.Wait(self)

При создании файла создается BLOB-объект.Другие методы приложения работают отлично.Похоже, что магазин не отвечает в течение 30 секунд.

Есть идеи, почему это происходит?Спасибо!

Ответы [ 3 ]

0 голосов
/ 31 августа 2011

Похоже, у Google были некоторые реконфигурации их серверов. Теперь все работает нормально, как и раньше.

0 голосов
/ 05 сентября 2011

A runtime.DeadlineExceededError происходит, когда ваш обработчик запросов занимает слишком много времени - вызов хранилища больших двоичных объектов оказался тем, что выполнялся, когда это произошло. Вам нужно профилировать свой обработчик с помощью appstats, чтобы понять, почему он такой медленный.

0 голосов
/ 31 августа 2011

Похоже, что вы не единственный, у кого есть эта проблема:

http://groups.google.com/group/google-appengine/browse_thread/thread/27e52484946cbdc1#(размещено сегодня)

...