Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django+;阿帕奇&x2B;多个站点+;“枕头事业”;AccessInit:hash冲突:1和1都是3;或;不支持操作:fileno“;_Django_Apache_Python 2.7_Pillow - Fatal编程技术网

Django+;阿帕奇&x2B;多个站点+;“枕头事业”;AccessInit:hash冲突:1和1都是3;或;不支持操作:fileno“;

Django+;阿帕奇&x2B;多个站点+;“枕头事业”;AccessInit:hash冲突:1和1都是3;或;不支持操作:fileno“;,django,apache,python-2.7,pillow,Django,Apache,Python 2.7,Pillow,我有一个django项目,其中站点是从admin动态部署的。它包括以下apache设置: <VirtualHost *:80> ServerName branch1.domain.com ServerAlias *.domain.com DocumentRoot /home/project/www/deploy/apache/multisite/ WSGIDaemonProcess project_multisite user=project group=project proces

我有一个django项目,其中站点是从admin动态部署的。它包括以下apache设置:

<VirtualHost *:80>
ServerName branch1.domain.com
ServerAlias *.domain.com
DocumentRoot /home/project/www/deploy/apache/multisite/
WSGIDaemonProcess project_multisite user=project group=project processes=5 threads=5
WSGIProcessGroup project_multisite
问题是,然后apache随机(大约50%的请求)崩溃并出现错误:

AccessInit: hash collision: 3 for both 1 and 1
[Thu Feb 12 11:48:02 2015] [error] [client 89.176.103.182] Premature end of script headers: apache.wsgi,
我发现,将以下代码添加到所有apache.wsgi文件几乎解决了我的问题:

import sys
import PIL.Image
sys.modules['Image'] = PIL.Image
问题是,从那时起,PIL的某些功能停止工作,我在处理JPEG图像时开始出现此错误:

 Feb 12 20:33:11 2015] [error] Internal Server Error: /admin/main/gallery/1/upload-photos/
[Thu Feb 12 20:33:11 2015] [error] Traceback (most recent call last):
[Thu Feb 12 20:33:11 2015] [error]   File "/home/project/www/deploy/apache/multisite/site_1/../../../../deploy/env/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
[Thu Feb 12 20:33:11 2015] [error]     response = wrapped_callback(request, *callback_args, **callback_kwargs)
[Thu Feb 12 20:33:11 2015] [error]   File "/home/project/www/deploy/apache/multisite/site_1/../../../../deploy/env/lib/python2.7/site-packages/django/utils/decorators.py", line 105, in _wrapped_view
[Thu Feb 12 20:33:11 2015] [error]     response = view_func(request, *args, **kwargs)
[Thu Feb 12 20:33:11 2015] [error]   File "/home/project/www/deploy/apache/multisite/site_1/../../../../deploy/env/lib/python2.7/site-packages/django/views/decorators/cache.py", line 52, in _wrapped_view_func
[Thu Feb 12 20:33:11 2015] [error]     response = view_func(request, *args, **kwargs)
[Thu Feb 12 20:33:11 2015] [error]   File "/home/project/www/deploy/apache/multisite/site_1/../../../../deploy/env/lib/python2.7/site-packages/django/contrib/admin/sites.py", line 206, in inner
[Thu Feb 12 20:33:11 2015] [error]     return view(request, *args, **kwargs)
[Thu Feb 12 20:33:11 2015] [error]   File "/home/project/www/deploy/apache/multisite/site_1/../../../../src/main/admin/branch.py", line 166, in upload_photos_form
[Thu Feb 12 20:33:11 2015] [error]     photo.thumb_admin.save(afile.name, afile)
[Thu Feb 12 20:33:11 2015] [error]   File "/home/project/www/deploy/apache/multisite/site_1/../../../../deploy/env/lib/python2.7/site-packages/django_resized/forms.py", line 43, in save
[Thu Feb 12 20:33:11 2015] [error]     thumb.save(new_content, format=img.format, quality=self.field.quality, **img.info)
[Thu Feb 12 20:33:11 2015] [error]   File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1439, in save
[Thu Feb 12 20:33:11 2015] [error]     save_handler(self, fp, filename)
[Thu Feb 12 20:33:11 2015] [error]   File "/usr/lib/python2.7/dist-packages/PIL/JpegImagePlugin.py", line 471, in _save
[Thu Feb 12 20:33:11 2015] [error]     ImageFile._save(im, fp, [("jpeg", (0,0)+im.size, 0, rawmode)])
[Thu Feb 12 20:33:11 2015] [error]   File "/usr/lib/python2.7/dist-packages/PIL/ImageFile.py", line 476, in _save
[Thu Feb 12 20:33:11 2015] [error]     fh = fp.fileno()
[Thu Feb 12 20:33:11 2015] [error] UnsupportedOperation: fileno
即时通讯使用:

  • Django 1.7.4
  • 枕头2.2.2(但也使用2.7.0测试了此问题)
我的问题是如何解决这个问题,这样我就不会犯这两个错误。谢谢你的帮助

更新: 应用程序的行为取决于apache.wsgi中PIL导入重写的位置: 第一个变体(如下)导致不支持操作:上面没有描述文件(可能是因为导入了PIL的debian标准版本):

第二个变量(如下)仍然会导致AccessInit:hash冲突:1和1都是3。所以事实上,这根本没有帮助:

import os
import sys
import site

os.environ['DJANGO_SETTINGS_MODULE'] = 'site_{{site.id}}'

www_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../../../')
sys.path = [
    os.path.join(www_dir, 'deploy/settings/'),
    os.path.join(www_dir, 'src'),
    os.path.join(www_dir, 'deploy/env/lib/python%s/site-packages' % sys.version[:3])
] + sys.path

import PIL.Image
sys.modules['Image'] = PIL.Image

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
import os
import sys
import site

import PIL.Image
sys.modules['Image'] = PIL.Image

os.environ['DJANGO_SETTINGS_MODULE'] = 'site_{{site.id}}'

www_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../../../')
sys.path = [
    os.path.join(www_dir, 'deploy/settings/'),
    os.path.join(www_dir, 'src'),
    os.path.join(www_dir, 'deploy/env/lib/python%s/site-packages' % sys.version[:3])
] + sys.path

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
import os
import sys
import site

os.environ['DJANGO_SETTINGS_MODULE'] = 'site_{{site.id}}'

www_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../../../')
sys.path = [
    os.path.join(www_dir, 'deploy/settings/'),
    os.path.join(www_dir, 'src'),
    os.path.join(www_dir, 'deploy/env/lib/python%s/site-packages' % sys.version[:3])
] + sys.path

import PIL.Image
sys.modules['Image'] = PIL.Image

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()