Почему я получаю ошибку MemoryError при создании проекта в Google App Engine - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь загрузить свой api (который использует некоторые большие зависимости) в движок приложений Google, но он не работает на этапе сборки из-за ошибки памяти или чего-то еще.

Сообщение об ошибке:

Step #1 - "builder": MemoryError
Step #1 - "builder":     msg += message_body
Step #1 - "builder":   File "/usr/lib/python2.7/httplib.py", line 890, in _send_output
Step #1 - "builder":     self._send_output(message_body)
Step #1 - "builder":   File "/usr/lib/python2.7/httplib.py", line 1065, in endheaders
Step #1 - "builder":     self.endheaders(body)
Step #1 - "builder":   File "/usr/lib/python2.7/httplib.py", line 1109, in _send_request
Step #1 - "builder":     self._send_request(method, url, body, headers)
Step #1 - "builder":   File "/usr/lib/python2.7/httplib.py", line 1069, in request
Step #1 - "builder":   File "/usr/local/bin/ftl.par/httplib2/__init__.py", line 1320, in _conn_request
Step #1 - "builder":   File "/usr/local/bin/ftl.par/httplib2/__init__.py", line 1399, in _request
Step #1 - "builder":   File "/usr/local/bin/ftl.par/httplib2/__init__.py", line 1659, in request
Step #1 - "builder":   File "/usr/local/bin/ftl.par/containerregistry/transport/transport_pool_.py", line 62, in request
Step #1 - "builder":   File "/usr/local/bin/ftl.par/containerregistry/client/v2_2/docker_http_.py", line 354, in Request
Step #1 - "builder":   File "/usr/local/bin/ftl.par/containerregistry/client/v2_2/docker_session_.py", line 167, in _patch_upload
Step #1 - "builder":   File "/usr/local/bin/ftl.par/containerregistry/client/v2_2/docker_session_.py", line 201, in _put_blob
Step #1 - "builder":   File "/usr/local/bin/ftl.par/containerregistry/client/v2_2/docker_session_.py", line 275, in _upload_one
Step #1 - "builder":   File "/usr/local/bin/ftl.par/concurrent/futures/thread.py", line 55, in run
Step #1 - "builder":   File "/usr/local/bin/ftl.par/concurrent/futures/_base.py", line 398, in result
Step #1 - "builder":   File "/usr/local/bin/ftl.par/containerregistry/client/v2_2/docker_session_.py", line 314, in upload
Step #1 - "builder":   File "/usr/local/bin/ftl.par/__main__/ftl/common/cache.py", line 212, in Set
Step #1 - "builder":   File "/usr/local/bin/ftl.par/__main__/ftl/python/layer_builder.py", line 56, in BuildLayer
Step #1 - "builder":   File "/usr/local/bin/ftl.par/__main__/ftl/python/layer_builder.py", line 163, in _build_pkg
Step #1 - "builder":   File "/usr/local/bin/ftl.par/concurrent/futures/thread.py", line 55, in run
Step #1 - "builder":   File "/usr/local/bin/ftl.par/concurrent/futures/_base.py", line 398, in result
Step #1 - "builder":   File "/usr/local/bin/ftl.par/__main__/ftl/python/layer_builder.py", line 144, in BuildLayer
Step #1 - "builder":   File "/usr/local/bin/ftl.par/__main__/ftl/python/builder.py", line 114, in Build
Step #1 - "builder":   File "/usr/local/bin/ftl.par/__main__.py", line 54, in main
Step #1 - "builder":   File "/usr/local/bin/ftl.par/__main__.py", line 65, in <module>
Step #1 - "builder":     exec code in run_globals
Step #1 - "builder":   File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
Step #1 - "builder":     "__main__", fname, loader, pkg_name)
Step #1 - "builder":   File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
Step #1 - "builder": Traceback (most recent call last):
Step #1 - "builder": INFO     full build took 213 seconds
Step #1 - "builder": INFO     build process for FTL image took 213 seconds
Step #1 - "builder": INFO     uploading_all_package_layers took 75 seconds
Step #1 - "builder": INFO     uploading_python_pkg_layer took 2 seconds
Step #1 - "builder": ERROR    Error during upload of: eu.gcr.io/sorcely/app-engine-tmp/build-cache/ttl-7d/python-cache:1fe79d2959d02f3da1ba4ba89bfb27027a5deb71e0ad70b6f848f893ddb9bd94

Я попытался изменить количество оперативной памяти в моем файле app.yaml и просто внести незначительные изменения в код.
Надеюсь, вы можете помочь мне
- Мариус

Пс. Я попытался разместить пример проекта flask, который отлично работал

1 Ответ

0 голосов
/ 07 мая 2020

Сборка, выполняющаяся в фоновом режиме перед развертыванием в App Engine, не может быть изменена, поэтому вам нужно обойти это. Идея состоит в том, чтобы поместить ваше приложение в контейнер и построить его напрямую с помощью Cloud Build (вы можете указать компьютер , который будет использоваться во время сборки), а затем развернуть его в движке приложения, используя этот образ:

gcloud app deploy --image-url=$PATH_TO_DOCKERFILE

Вы даже можете использовать Cloud Run для запуска того же образа.

Добавление дополнительной оперативной памяти к вашему app.yaml, как вы пытались сделать изначально не будет работать, поскольку app.yaml указывает ресурсы, которые будет иметь ваш App Engine при запуске вашего приложения, а ошибка возникает, когда приложение пытается быть построено, следовательно, Cloud Build не имеет достаточно памяти для вашего приложения.

...