Приложение Flask, работающее на AWS App Runner, возвращает 502 Bad Gateway

У меня есть приложение 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 поддерживает динамическую типизацию, что облегчает разработку.


113
1

Ответ:

Решено

Для приложений AWS App Runner существует ограничение времени ожидания в 120 секунд. см. документацию здесь:

Общий лимит времени ожидания для HTTP-запросов составляет 120 секунд. В 120 секунд входит время, необходимое приложению для чтения запроса, включая тело, и завершения записи HTTP-ответа.