Google App Engine 实例在完全相同的 API 调用下表现不同
Google App Engine instances behave differently with the exact same API call
我有一个带有 DRF API 的 Django 应用程序部署在 Google App Engine 的灵活环境中。我正在使用带有 PostGIS 扩展的 PostgreSQL。部署后,我有两个实例 运行.
我有一个 API 让我们可以使用 GeoDjango 从我的数据库中检索某些位置。对于完全相同的 API 调用,大约有 50% 的时间会失败。正如我从 GCP 控制台日志中看到的那样,一个 GAE 实例始终工作,而另一个系统地 returns 一个 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]
这个问题实际上与 GEOS 库完全无关。该实例 运行 内存不足。我通过简单地增加 app.yaml
中的资源大小并重新部署解决了这个问题:
resources:
cpu: 1
memory_gb: 2
disk_size_gb: 10
我有一个带有 DRF API 的 Django 应用程序部署在 Google App Engine 的灵活环境中。我正在使用带有 PostGIS 扩展的 PostgreSQL。部署后,我有两个实例 运行.
我有一个 API 让我们可以使用 GeoDjango 从我的数据库中检索某些位置。对于完全相同的 API 调用,大约有 50% 的时间会失败。正如我从 GCP 控制台日志中看到的那样,一个 GAE 实例始终工作,而另一个系统地 returns 一个 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]
这个问题实际上与 GEOS 库完全无关。该实例 运行 内存不足。我通过简单地增加 app.yaml
中的资源大小并重新部署解决了这个问题:
resources:
cpu: 1
memory_gb: 2
disk_size_gb: 10