Django上传失败请求数据读取错误

时间:2010-04-14 23:08:00

标签: django upload uploadify

我有一个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",),以防它是内存上传处理程序,但它没有任何区别。

有谁知道如何解决这个问题?

2 个答案:

答案 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)

问题可能是:

  • 您的互联网连接(某些防火墙阻止大型上传,只需尝试上传到其他服务进行测试)。
  • 您的网络浏览器(尝试禁用Flash以查看是否有效)
  • 您的网络服务器(也许您的网络服务器禁止大量上传?)

所以......为了更有帮助,你必须给我们一些关于哪个部分是问题的信息(应该相当容易测试),如果它是网络服务器(我猜的是)什么样的您正在运行的Web服务器,什么样的Python处理程序(mod_wsgi,mod_python,fastcgi等等)