Получение ошибки 504 Gateway в Google App Engine (длительное время выполнения Flask App) - PullRequest
0 голосов
/ 20 марта 2020

Я работаю с Google Cloud Platform & Flask впервые - мой клиент хотел, чтобы я предоставил решение для него через 2 недели. До сих пор я успешно создавал приложение Flask и хотел его реализовать через Google App Engine. Однако время выполнения моей функции составляет чуть более 2,5 минут, и я получаю ошибку "504 Gateway Timeout" . В этом фрагменте кода я получаю доступ к bigQuery, таблицам Google и корзинам GCS. Должен ли я перейти на новую службу GCP или может быть достаточно настроек в файле code / yaml? Мой конфиг yaml -

runtime: python37

liveness_check:
 check_interval_sec: 300
 timeout_sec: 299
 failure_threshold: 10
 success_threshold: 10
 initial_delay_sec: 500

readiness_check:
 app_start_timeout_sec: 1800

Я был бы очень, очень благодарен всем, кто может помочь мне решить эту проблему. Спасибо!

Редактировать: Просто кратко о приложении - это приложение для прогнозирования, которое считывает данные из больших запросов, групп GCS и таблиц Google, обрабатывает их и запускает модели ML. в теме. Результаты записываются обратно в таблицы Google в пределах самого приложения (т. Е. От приложения не требуется ответа на см.). Я запускаю приложение с помощью Google AppsScript.

1 Ответ

0 голосов
/ 22 марта 2020

Лучший вариант - реструктурировать работу вашего сайта. Затем вы можете придерживаться стандарта GAE. Даже если вы переключитесь на GAE Flexible, он будет работать лучше таким образом.

Вот последовательность операций:

  1. Пользователь отправляет запрос с веб-страницы.
  2. Ваш веб-сайт немедленно возвращается со страницей, указывающей, что вы работаете над ним.
  3. На возвращаемой вами странице указана Javascript, которая будет опрашивать ваш веб-сайт, чтобы спросить, выполнена ли задача.
  4. Когда задача будет завершена, Javascript обновит страницу и представит результаты пользователю.

На стороне сервера вы можете использовать облачные задачи для выполнения обработки, которая, по моему мнению, имеет ограничение по времени 10 минут.

Таким образом, пользователь всегда просматривает веб-страницу и не сидит там, ожидая и глядя на пустой экран, ожидая, пока сервер что-нибудь вернет.

...