Запись и удаление файла или перезапись при большой нагрузке на сервер?
Здравствуйте, пишу бота, и тут встал вопрос, при большом количестве запросов в секунду, что будет быстрее создавать, выполнять над ним нужные действия и удалять файл для каждого запроса или при каждом запросе его перезаписывать и выполнять над ним действия?
Я должен получить голосовое сообщение от пользователя, потом обработать и отдать ему. Сейчас я отправляю каждый запрос в очередь и фаил перезаписываю, вот хотел поинтересоваться, может быть было бы лучше создавать фаил, а после обработки его удалять.
AlexMine, встает ряд вопросов:
1. почему вы используете один файл
2. почему вы не храните исходную дорожку
3. обязательно ли для обработки иметь файл физически
4. в нагруженный проектах такие операции параллелятся - как вы думали решать вопрос доступа нескольких воркеров к одному файлу?)
Иван Шумов, хм.. с другой стороны, если нагрузка будет очень большой а пишется параллельно много файлов, у ОС же есть ограничение на количество открытых файлов вроде бы? Ошибки будут
1. Т.к сейчас код весь синхронный и все выполняется в порядке очереди, очередь создаю с помощью rq и redis.
2. В исходной дорожке нет необходимости, она нужна всего лишь 1 раз перед обработкой.
3. Да, обязательно.
4. Хорошо, что натолкнули на эту мысль, теперь понимаю, что для каждого пользователя нужно сохранять уникальный фаил, чтобы распараллелить задания потом)
Jhn Doe from by, поэтому файловое хранилище в высоконагруженных проектах облачное и распределенное, как, например, AWS S3 и является не файловым, а объектным
AlexMine,
1. redis, имхо, не очень. RabbitMQ или Kafka - топ. Старайтесь переходить на распределенные воркеры для обработки и будет вам счастье. Событийная модель для проектов сейчас - top notch разработки
2. если у вас ошибка в обработке то вы не можете провести повторную обработку и все, приехали
4. в любую систему надо закладывать горизонтальное масштабирование
правило простое
1. для каждой сессии уникальный файл
2. работа с файлом только в синхронном режиме
3. лучше всего работать через таски RabbitMQ
4. старайтесь избегать файлов при высоконагруженных проектах :)