我有一个使用mod_wsgi在Apache2(linux)下运行的Django应用程序,并且在守护进程模式下运行时file upload失败,但在embeddedpython解释器时工作。 任何想法是什么可能造成这一点,我怎么解决它?
以下Apacheconfiguration正在运行:
<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时,file upload立即失败。
WSGIDaemonProcess mygroup display-name=%{GROUP} inactivity-timeout=600 WSGIProcessGroup mygroup
Apache错误日志中没有任何内容。
Django表单正在使用FileField,在执行form.is_valid()时只会给出“this field is required”错误。 该视图有一个@login_required装饰器。 所有这些工作在embedded式模式下运行良好。
作为一个守护进程运行,允许更好地更新代码(只需触摸wsgi文件)比embedded需要Apache重新加载,所以我更喜欢,如果有可能。
更新:这发生在Opera,而不是FireFox。
猜测,你没有运行最新的mod_wsgi 2.X版本,并使用Opera浏览器。
当使用mod_wsgi守护进程模式时,Opera有一个已知的问题,并且使用HTTP 100-continue。 这个问题已经在mod_wsgi 2.4中解决了。
既然你没有说你使用的是什么版本的mod_wsgi,也不知道你使用的是哪个浏览器,这只是一个猜测。