Django: загрузка больших файлов - пользовательская обработка с помощью mod_wsgi
-
05-07-2019 - |
Вопрос
Я делаю выгрузку файлов с использованием механизма выгрузки файлов Django с пользовательским обработчиком (путем подкласса django.core.files.uploadhandler.FileUploadHandler
), который выполняет некоторую дополнительную обработку в
Функция receive_data_chunk (self, raw_data, start)
.
Мне было любопытно, когда на самом деле вызывается обработчик (то есть после того, как файл был полностью загружен сервером или когда он поступил в сокет)?
Из моих тестов я узнал, что у вас есть доступ к данным по мере их поступления в сокет, но я хотел бы, чтобы кто-то подтвердил это. Я немного озадачен этим, потому что я думал, что mod_wsgi
был генератором контента
в Apache, поэтому вызывался после входных фильтров
, которые предварительно обработать запрос клиента.
PS: я использую Apache + mod_wsgi + Django.
Решение
В Apache фильтры ввода применяются к содержимому ввода только тогда, когда обработчик запроса читает содержимое ввода. Таким образом, никакая предварительная обработка не выполняется входными фильтрами, она выполняется встроенным обработчиком запросов, потребляющим входной контент.