3

フラッシュを使用してファイルをアップロードし、進行状況バーを表示する jQ プラグインであるjQuery uploadifyからのアップロードを受け入れる Django アプリがあります。

約 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",)

これを修正する方法を知っている人はいますか?

4

2 に答える 2

2

これは MediaTemple によくあることです -- 私はこの問題に遭遇し、修正しましたが、どういうわけかまた壊れてしまいました。NFS のロックと、django のストレージ モジュールで使用されるシステム コールに関する何かを処理する必要があります。

... (10分後) ...

それを見つけた:

最新の 1.1 svn リリースを実行しようとしている人は、TemporaryFileUploaderHandler がロック コードも使用するようになったため、上記の修正が機能しなくなったことに気付くでしょう。mediatemple や django 開発者がこれを理解するまでの回避策は、django.core.files.locks を編集し、fcntl.lockf への 2 つの呼び出しを 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

于 2010-05-26T03:44:12.967 に答える
2

問題は次のとおりです。

  • インターネット接続 (一部のファイアウォールが大きなアップロードをブロックしています。他のサービスにアップロードしてテストしてみてください)。
  • あなたのウェブブラウザ(フラッシュを無効にして、それが機能するかどうかを確認してください)
  • あなたのウェブサーバー (おそらくあなたのウェブサーバーは大規模なアップロードを禁止していますか?)

だから...もう少し役立つように、どの部分が問題であるか(テストはかなり簡単なはずです)、それがWebサーバーであるか(私が推測している)、どのような種類のWebサーバーであるかについての情報を提供する必要があります実行中の Python ハンドラの種類 (mod_wsgi、mod_python、fastcgi など)

于 2010-04-14T23:17:44.593 に答える