У меня есть приложение Flask, работающее в AWS App Runner с Gunicorn. Все работало нормально, но я добавил новую функцию, которая включает в себя API, который вызывает разные конечные точки и возвращает ответ примерно через 2–3 минуты.
На локальном компьютере он работает нормально, но при развертывании он возвращает 502 Bad Gateway каждый раз, когда я вызываю этот API. Журналы кажутся в порядке, ошибок нет, и я не вижу никаких отличий от локального запуска. Все остальные конечные точки работают нормально.
Докерфайл
FROM python:3.11
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH = "$VIRTUAL_ENV/bin:$PATH"
RUN pip cache purge
RUN pip install --upgrade pip
# Install dependencies:
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Run the application:
COPY . .
CMD ["gunicorn", "--config", "gunicorn_config.py", "app:app"]
Gunicorn_config.py
import os
workers = int(os.environ.get('GUNICORN_PROCESSES', '2'))
threads = int(os.environ.get('GUNICORN_THREADS', '4'))
bind = os.environ.get('GUNICORN_BIND', '0.0.0.0:8080')
#timeout = int(os.environ.get('GUNICORN_TIMEOUT', '600'))
forwarded_allow_ips = '*'
secure_scheme_headers = { 'X-Forwarded-Proto': 'https' }
🤔 А знаете ли вы, что...
Python поддерживает динамическую типизацию, что облегчает разработку.
Для приложений AWS App Runner существует ограничение времени ожидания в 120 секунд. см. документацию здесь:
Общий лимит времени ожидания для HTTP-запросов составляет 120 секунд. В 120 секунд входит время, необходимое приложению для чтения запроса, включая тело, и завершения записи HTTP-ответа.