Экземпляры Google App Engine ведут себя по-разному при одинаковом вызове API - PullRequest
0 голосов
/ 12 октября 2018

У меня есть приложение Django с DRF API, развернутое в гибкой среде на Google App Engine.Я использую PostgreSQL с расширением PostGIS.После развертывания у меня работает два экземпляра.

У меня есть API, который позволяет нам использовать GeoDjango для получения определенных местоположений из моей базы данных.При точно таком же вызове API это происходит примерно 50% времени.Как я вижу из журналов консоли GCP, один экземпляр GAE всегда работает, а другой систематически возвращает 500 со следующей ошибкой:

ImportError: Could not find the GEOS library (tried "geos_c", "GEOS"). 
Try setting GEOS_LIBRARY_PATH in your settings.

Однако библиотека GEOS установлена ​​(см. Dockerfile).ниже).Любая идея о том, почему эти два экземпляра ведут себя по-разному и что я могу сделать, чтобы предотвратить это?

Dockerfile

# [START dockerfile]
FROM gcr.io/google_appengine/python

# Install libraries
RUN apt-get update && apt-get install -y \
  binutils \
  libproj-dev \
  gdal-bin \
  python-gdal

# Change the -p argument to use Python 2.7 if desired.
RUN virtualenv /env -p python3.6

# Set virtualenv environment variables. This is equivalent to running
# source /env/bin/activate.
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

ADD requirements.txt /app/
RUN pip install -r requirements.txt
ADD . /app/

CMD gunicorn -b :$PORT nlp.wsgi
# [END dockerfile]

app.yaml

# [START runtime]
runtime: custom
env: flex
entrypoint: gunicorn -b :$PORT nlp.wsgi

runtime_config:
  python_version: 3
# [END runtime]

1 Ответ

0 голосов
/ 16 октября 2018

Проблема была фактически совершенно не связана с библиотекой GEOS.Экземпляру не хватает оперативной памяти.Я решил проблему, просто увеличив размер ресурса в app.yaml и повторно развернув:

resources:
  cpu: 1
  memory_gb: 2
  disk_size_gb: 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...