У меня есть установка, в которой nginx будет try_files
в директории nedia и обслуживать файл статического изображения.
Если он не найдет его, вызовет бэкэнд, извлечет файл из s3, создаст несколько записей БД, а затем скопирует файл в каталог мультимедиа, чтобы дальнейшие вызовы этого файла мультимедиа обслуживались nginx.
Создание файла может занять 5 секунд.
Когда для этого файла поступит X новых запросов, а он еще не сгенерирован, серверная часть будет вызываться X раз, а не только один раз. Как я могу избежать этой проблемы и удерживать все запросы, пока файл не будет готов?
Создайте какой-то механизм блокировки, который информирует другие экземпляры / потоки о том, что этот файл в настоящее время обрабатывается и должен ждать. Самым простым решением было бы записать файл во временный каталог с требуемым именем и позволить скрипту проверить его существование и перейти в шаблон удержания, если он существует.