Для долгосрочных заданий типичная стратегия состоит в том, чтобы отслеживать своего рода идентификатор задания в базе данных и обновлять базу данных после его завершения. Например, у вас может быть API, который выглядит следующим образом:
POST /jobs
{ ... job parameters ... }
И в ответ:
{
"id": "c7758160-12c2-448a-b982-1f613e4a9593"
"status": "processing"
}
Затем вы можете опросить результат:
GET /jobs/c7758160-12c2-448a-b982-1f613e4a9593
Если задание status
равно done
или как-то еще, вы можете нажать на соответствующий S3 URL. (Возможно, ваш сервер API возвращает подписанный URL-адрес.)
Вместо опроса вы также можете использовать отправленные сервером события для обновлений.
В качестве альтернативного метода для более коротких выполняемых заданий вы может принять запрос API, запустить обработку задания и только после этого выдать HTTP 302/307, перенаправляющий на S3 URL. Я бы не стал делать это, как правило, дольше пары секунд.