Мы создали веб-приложение, в котором мы использовали функции Firebase для таких легких работ, как вход в систему, обновление профиля и т. Д. c. и мы развернули 2 функции в App Engine с Nodejs.
Функция 1: Загрузка аудио / видео файла из хранилища Firebase и преобразование его с помощью ffmpeg и загрузка преобразованной версии обратно в хранилище. Но App Engine завершает работу с сигналом в середине процесса загрузки (через ~ 40 секунд), если файл больше (> 500 МБ)
Функция 2. Вызов API Google (ASR) и ожидание ответа (прогресс% ) и запись этого ответа в пожарное хранилище до его завершения (100%). Этот процесс может занять от 1 до 20 минут, в зависимости от длины файла. Но здесь мы получаем две разные проблемы.
- Либо App Engine создает новый экземпляр в середине процесса вызова API и убивает текущий экземпляр (так как мы устанавливаем экземпляры # в 1), даже если нет параллельных запросов , Я не понимаю этого поведения, так как это не требует интенсивного использования процессора или памяти. App Engine выдает следующую информацию в журналах:
Этот запрос вызвал запуск нового процесса для вашего приложения и, таким образом, вызвал загрузку кода вашего приложения в первый раз. Таким образом, этот запрос может занять больше времени и использовать больше ресурсов процессора, чем обычный запрос для вашего приложения
Или App Engine завершает работу из-за idle_timeout, даже если он ожидает asyn c ответа API и записывает его в дб. Похоже, что когда нет входящих запросов, App Engine считает себя бездействующим и завершает работу через некоторое время (~ 10 минут)
Мы новички в GCP и App Engine, поэтому, возможно, мы используем неправильный продукт (например, Compute Engine?) или неправильная реализация. Также мы видели PubSub, Cloud Tasks et c. который выглядит как решение для нашего случая. Таким образом, мне интересно, что может быть самым элегантным способом подойти к проблеме и реализовать решение? Любые комментарии, отзывы приветствуются.
С уважением А. Фарук Акар
App Engine app.yaml Конфигурация
runtime: nodejs10
manual_scaling:
instances: 1