Я работаю над приложением Django и до сих пор развертывал его в стандартной среде App Engine, но затем я начал использовать библиотеку Python Google Cloud Vision и из-за некоторых ограничений, которые я объявляю, переключился на гибкую среду.
Мой код правильно работает на моем локальном компьютере с python manage.py runserver
, но когда я развертываю его в App Engine, я получаю следующее
<html>
<head>
<title>502 Bad Gateway</title>
</head>
<body bgcolor="white">
<center>
<h1>502 Bad Gateway</h1>
</center>
<hr>
<center>nginx</center>
</body>
</html>
Когда я исследовал проблему, я обнаружил, что мне нужно изменить настройки nginx, как указано Вот.
Настройки Nginx для применения
# Tune nginx keepalives to work with the GCP HTTP(S) Load Balancer:
keepalive_timeout 650;
keepalive_requests 10000;
Но я не смог найти способ сделать это. Я также плохо знаком с серверной разработкой, поэтому у меня нет большого опыта.
Вот мой app.yaml
файл
runtime: python
api_version: 1
threadsafe: yes
env: flex
entrypoint: gunicorn -b :$PORT app.wsgi
runtime_config:
python_version: 3
handlers:
- url: /static
static_dir: static
- url: .*
script: app.wsgi.application
builtins:
- django_wsgi: on
Я пробовал установить entrypoint
к следующему, но это не сработало.
entrypoint: gunicorn --keep-alive 650 -b :$PORT app.wsgi
РЕДАКТИРОВАТЬ 1: Эта ошибка возникает только с POST
Запросы.
РЕДАКТИРОВАТЬ 2: Вот журнал ошибок с http
запрос:
{
insertId: "1c0for6fm6z812"
jsonPayload: {
trace: "$traceId"
latencySeconds: "30.529"
time: null
}
httpRequest: {
requestMethod: "POST"
requestUrl: "/users/register/"
status: 502
responseSize: "568"
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
remoteIp: "130.211.3.116"
referer: "-"
}
resource: {
type: "gae_app"
labels: {
project_id: "cuz-api"
version_id: "20170504t110352"
module_id: "default"
}
}
timestamp: "2017-05-04T08:30:14.560885079Z"
labels: {
compute.googleapis.com/resource_name: "68f73c569efa"
compute.googleapis.com/resource_id: "8300604998554181598"
compute.googleapis.com/zone: "us-central1-b"
appengine.googleapis.com/trace_id: "7835424c5d67f87f56649adf26e71250"
}
logName: "projects/cuz-api/logs/appengine.googleapis.com%2Fnginx.request"
}
А это журнал ошибок с https
запрос:
{
insertId: "95tl7qfm6m4zy"
jsonPayload: {
time: null
trace: "$traceId"
latencySeconds: "30.028"
}
httpRequest: {
requestMethod: "POST"
requestUrl: "/users/register/"
status: 502
responseSize: "568"
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
remoteIp: "130.211.3.237"
referer: "-"
}
resource: {
type: "gae_app"
labels: {
version_id: "20170504t110352"
module_id: "default"
project_id: "cuz-api"
}
}
timestamp: "2017-05-04T08:26:38.540802339Z"
labels: {
compute.googleapis.com/zone: "us-central1-b"
appengine.googleapis.com/trace_id: "3eab23e9502e250d9f00dd5bc7eb465e"
compute.googleapis.com/resource_name: "68f73c569efa"
compute.googleapis.com/resource_id: "8300604998554181598"
}
logName: "projects/cuz-api/logs/appengine.googleapis.com%2Fnginx.request"
}
Я считаю, что вам не нужно прикасаться к Nginx. Ссылка, на которой вы основываетесь, имеет отношение к балансировщику нагрузки HTTP, а не к App Engine Flexible.
Пример работы приложения Django на App Engine flexible можно найти Вот.
Я была такая же проблема. Мне удалось это исправить, увеличив timeout
настройка (по умолчанию 30 секунд).
Похоже, ваше приложение плохо работает на локальной тестовой машине. Когда это произойдет, его станет легко перенести из стандартной среды приложения в гибкую, следуя интерактивным инструкциям «Перенос служб из стандартной среды в гибкую среду». руководство.