Мы внедрили систему, в которой нам нужно было контролировать доступ к загрузке (больших) статических файлов, естественно, не желая, чтобы Django обслуживал их сам.Мы придумали схему, согласно которой приложение Django, после проверки того, что пользователю разрешено загружать файл (или увеличить счетчик, в вашем случае), мы создали бы произвольную символическую ссылку на файл, к которой у Apache был доступ (будьте осторожны: убедитесь, что индексация каталогов отключена и т. д.), а затем перенаправьте пользователя на эту символьную ссылку, которая будет обслуживаться Apache.
У нас есть cronjob «cleanup», который очищает символическую ссылку через минуту после того, как он создан, поэтому, если они хотят загрузить его снова, они должны пройти через Django и пересчитать его снова.Теоретически они могли бы загрузить его более одного раза за это время, но возможно ли это?Вы можете очистить больше, чем каждую минуту: Apache просто нужна символическая ссылка, чтобы существовать в начале загрузки, а не на протяжении всего процесса.
Мне было бы интересно узнать, как другие решают эту проблему, так как ясогласен с ФП, что это распространенный сценарий.