我有一个Django应用程序接受来自jQuery uploadify的上传,这是一个使用flash上传文件并提供进度条的jQ插件。
大约150k以下的文件工作,但更大的文件总是失败,几乎总是在大约192k(即3个块)完成,有时大约160k。我得到的例外情况如下。
exceptions.IOError
request data read error
File "/usr/lib/python2.4/site-packages/django/core/handlers/wsgi.py", line 171, in _get_post
self._load_post_and_files()
File "/usr/lib/python2.4/site-packages/django/core/handlers/wsgi.py", line 137, in _load_post_and_files
self._post, self._files = self.parse_file_upload(self.META, self.environ[\'wsgi.input\'])
File "/usr/lib/python2.4/site-packages/django/http/__init__.py", line 124, in parse_file_upload
return parser.parse()
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 192, in parse
for chunk in field_stream:
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 314, in next
output = self._producer.next()
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 468, in next
for bytes in stream:
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 314, in next
output = self._producer.next()
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 375, in next
data = self.flo.read(self.chunk_size)
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 405, in read
return self._file.read(num_bytes)
在Django开发服务器上本地运行时,大文件可以正常工作
我已经尝试设置我的FILE_UPLOAD_HANDLERS = ("django.core.files.uploadhandler.TemporaryFileUploadHandler",)
,以防它是内存上传处理程序,但它没有任何区别。
有谁知道如何解决这个问题?
答案 0 :(得分:2)
这在MediaTemple中很常见 - 我遇到了这个问题,修复了它,不知怎的,它再次被打破了。它必须处理有关NFS锁定和django存储模块使用的系统调用的事情。
...(10分钟后)......
找到它:
任何人都试图运行最新的1.1 svn发布会注意到的 以上修复不再有效 TemporaryFileUploaderHandler现在使用 锁定代码也。解决方法 直到mediatemple和/或django devs 想出来就是编辑 django.core.files.locks并更改 两次调用fcntl.lockf来 fcntl.flock
这是一个相关的错误报告 任何有兴趣的人: http://code.djangoproject.com/ticket/9400
http://osdir.com/ml/DjangoUsers/2009-06/msg01014.html - > https://forums.mediatemple.net/viewtopic.php?id=2514
答案 1 :(得分:1)
问题可能是:
所以......为了更有帮助,你必须给我们一些关于哪个部分是问题的信息(应该相当容易测试),如果它是网络服务器(我猜的是)什么样的您正在运行的Web服务器,什么样的Python处理程序(mod_wsgi,mod_python,fastcgi等等)