2010-12-01 6 views
2

私は自分のサイトにファイルをアップロードするフォームを持っています。現在私はアマゾンS3にファイルをアップロードしてからユーザーに返信します。 Djangoにファイルがローカルサーバに保存された直後にユーザに "成功"応答を送る方法はありますか?しかし私がs3に保存し始める前に?実際の機能が完了する前にhttp応答を返します。

+0

私はそれが汚れたハックだと感じます。私はあなたが望むものを正確に行う唯一の解決策を想像することができます。結果を部品ごとに送信できます。もちろん、htmlの一部を返すことはできません。なぜなら、ソケットはそれの後で閉じられるからです。必要なときにソケットに直接書き込む必要があります。このメソッドは "長いポーリング"と呼ばれますが、私は "トルネード"サーバーなしでそれについてgoogleすることはできません。申し訳ありませんが、私のテキストが混乱するなら、私は英語に慣れていません。 – werehuman

答えて

0

ここでは、後のプロセスでS3に移動するために、ファイル(パス、情報)をキューに追加することをお勧めします。ファイルを受け入れ、成功メッセージを送信し、後で「クラウドに送信する」。何かcronやその他の定期的に発生する "タスクキュー"タイプの状況で実行されます。

これはもちろん、ファイルを使って何をやっているのか、さらにいくつかのコンテキストによって決まります。

1

私は実際に何か似たようなやり方をしています。私はpythonマルチプロセッシングライブラリを使ってs3へのファイルのアップロードを処理しています。だから私は要求を受け取った後、私はファイル処理プロセスを起動し、即座に成功応答をユーザーに返します。発生する予定のサーバー負荷量に応じて、キューイングシステムを使用してs3へのファイルアップロードを処理する方が良いかもしれませんが、開始するサイトやヒット率が低いサイトでは問題ありません。