и должгно формировать файл. Файл формирует долго и надо ставить в очередь другие запросы. Как это лучше делать? Хочу юзать асинхронные контролеры. Локер я так понимаю не очень тут
Вот будет у тебя в очереди 100 запросов, и начнут они отваливаться по таймауту, что ты будешь делать?
Пусть контроллер создаёт только параметры в базе, и отдельно Hangfire по этим таскам файлы формирует. При записи параметров в базу - возвращай некий идентификатор задачи, по которому можно проверить - сформировался ли файл.
Отдельный сервак (или кластер за балансировщиком), который делает тяжелую работу. Отдельное распределенное хранилище для файлов (субд, redis, s3, файловый сервер,...). Отдельно сервер с апи, которое работает с фронтендом. Апи ставит в очередь, отслеживает прогресс, отдаёт результат из хранилища. Большой и толстый второй сервак создаёт файлы. Асинхронные контроллеры - инструмент для приложений -бездельников, которые только ждут, когда за них работу другие сделают. Если же приложение само что-то делает (занимает поток) - тогда они не помогут.
Обсуждают сегодня