У меня есть приложение Django, работающее под Apache2 (linux) с использованием mod_wsgi, и загрузка файлов не выполняется при работе в режиме демона, но работает, когда встроен интерпретатор python. Есть идеи, что может быть причиной этого и как это исправить?
Следующая конфигурация Apache работает:
<VirtualHost *:80>
ServerName mysite.com
DocumentRoot /var/www/
Alias /media/ /var/www/media/
<Directory /var/www/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
Include /etc/apache2/yslow_optimizations.conf
</Directory>
WSGIScriptAlias / /var/djangoapp/apache/django.wsgi
<Directory /var/djangoapp/apache/>
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/mysite.error.log
CustomLog /var/log/apache2/mysite.access.log combined
</VirtualHost>
Но когда я добавляю следующие директивы для демонстрации процесса wsgi, загрузка файла мгновенно завершается ошибкой.
WSGIDaemonProcess mygroup display-name=%{GROUP} inactivity-timeout=600
WSGIProcessGroup mygroup
Похоже, что в журнале ошибок Apache ничего нет.
Форма Django использует FileField и просто выдает ошибку «это поле обязательно» при выполнении form.is_valid (). В представлении есть декоратор @login_required. Все это нормально работает во встроенном режиме.
Запуск в качестве демона позволяет обновлять код гораздо более изящно (просто касаясь файла wsgi), чем когда он встроен, что требует перезагрузки Apache, поэтому я бы предпочел это, если это возможно.
Обновление: это происходит с Opera, а не с FireFox.
Предположительно, вы используете не последнюю версию mod_wsgi 2.X, а браузер Opera.
Существует известная проблема с Opera и ее использованием HTTP 100-continue при использовании режима демона mod_wsgi. Эта проблема была исправлена в mod_wsgi 2.4.
Поскольку вы не говорите, какую версию mod_wsgi вы используете и какой браузер вы используете, это только предположение.