Ошибка загрузки Django при ошибке чтения данных запроса - PullRequest
3 голосов
/ 15 апреля 2010

У меня есть приложение Django, которое принимает загрузки от jQuery uploadify , плагин jQ, использующий флэш-память для загрузки файлов и отображения индикатора выполнения.

Файлы до 150 тыс. Работают, но большие файлы всегда терпят неудачу и почти всегда на уровне около 192 тыс. (Это 3 блока), иногда около 160 тыс. Исключение, которое я получаю, ниже.

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 ]

2 голосов
/ 26 мая 2010

Это характерно для MediaTemple - я столкнулся с этой проблемой, исправил ее, и как-то она снова сломалась. Он должен иметь дело с блокировкой NFS и системными вызовами, используемыми модулями хранения django.

... (через 10 минут) ...

Нашел:

Любой, кто пытается запустить последнюю версию 1.1 релиз SVN заметит, что выше исправление больше не работает, так как TemporaryFileUploaderHandler теперь использует код блокировки тоже. Обходной путь пока средние и / или 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 голос
/ 15 апреля 2010

Проблема может быть:

  • ваше интернет-соединение (некоторые брандмауэры блокируют большие загрузки, попробуйте загрузить их в другой сервис, чтобы проверить это).
  • ваш веб-браузер (попробуйте отключить флэш-память, чтобы проверить, работает ли он)
  • ваш веб-сервер (возможно, ваш веб-сервер запрещает большие загрузки?)

Так что ... чтобы быть немного более полезным, вам нужно дать нам некоторую информацию о том, какая часть является проблемой (должна быть довольно простой для тестирования) и, если это веб-сервер (который я предполагаю), какой какого веб-сервера вы используете, какой обработчик Python (mod_wsgi, mod_python, fastcgi и т. д.)

...