代码之家  ›  专栏  ›  技术社区  ›  Jake

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

  •  3
  • Jake  · 技术社区  · 14 年前

    我有一个django应用程序可以从 jQuery uploadify ,一个jq插件,使用flash上传文件并给出进度条。

    在大约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 回复  |  直到 14 年前
        1
  •  1
  •   Wolph    14 年前

    问题可能是:

    • 你的互联网连接(一些防火墙阻止大的上传,只是尝试上传到其他服务来测试)。
    • 你的webbrowser(尝试禁用flash看看是否有效)
    • 你的网络服务器(也许你的网络服务器禁止大量上传?)

    所以…为了提供更多帮助,您必须提供一些信息,告诉我们问题出在哪一部分(应该很容易测试),如果是Web服务器(我猜是Web服务器),您运行的是哪种Web服务器,哪种Python处理程序(mod_wsgi,mod_python,fastcgi,等等…)

        2
  •  2
  •   Marcel Chastain    14 年前

    这在mediatemple中很常见——我遇到了这个问题,修复了它,但不知何故又坏了。它必须处理一些关于nfs锁定的问题,以及django的存储模块使用的系统调用。

    …(10分钟后)……

    找到它:

    任何试图运行最新1.1的人 SVN发布会注意到 上面的修正已经失效了 TemporaryFileUploaderHandler现在使用 锁定代码也是。解决办法 直到mediatemple和/或django devs 弄清楚这是编辑 django.core.files.locks并更改 两次呼叫fcntl.lockf 弗洛克

    这是一个相关的错误报告 任何感兴趣的人: http://code.djangoproject.com/ticket/9400

    http://osdir.com/ml/DjangoUsers/2009-06/msg01014.html -gt; https://forums.mediatemple.net/viewtopic.php?id=2514