2012-01-25 4 views
2

私はウェブ開発にはまったく新しいので、私は自分がしようとしているものに対して大きなイメージを持っているかどうかを確認しようとしています。用語が間違っている場合は、私を許してください。 私のDjangoのアプリは以下を実行する必要があります。Djangoにテンプレートを返す方法はありますが、テンプレートが返された後もプロセスを実行し続けますか?

  1. ユーザーは、ユーザーが自分のブラウザで結果を見
  2. (時間かかることがあります)
  3. ファイルがサーバーによって処理された彼のブラウザを介してファイルをアップロード

私はここに...ステップ2を実行する方法についての悩みを抱えているが、私は考えていますものです:

1.Userは、ファイル(非常に簡単)をアップロードし

2.Fileが処理される - ビュー機能は、このような何かを行くだろう:

def process(request): 
    a. (get file from the request) 
    b. (return a page which says "the server is running your job, results will be available in {ETA}") 
    c. (start processing the data) 

3.Userが彼のブラウザで結果を見て - ブラウザは、ジョブが行われているかどうかを確認するために定期的にサーバーに照会します。ジョブが準備完了すると、ブラウザは結果を取得します。

私の質問は、ステップ2のパートbとcで、処理が完了するのを待たずにブラウザに返答を返すことができますか?または、結果をブラウザに返した後にプロセスを実行し続けるにはどうすればよいですか?このプロセスはDjangoの環境変数にアクセスするのが理想的です.Djangoのインタフェースを介してデータベースと連携するためです。

+2

タスクキュー(すなわちセロリ)または開いているサブプロセスを使用する(動作するかどうかわからない) – yedpodtrzitko

答えて

6

処理をオフロードする必要があります。 django-celeryを使用できます。

関連する問題