1

現在、django を使用して Web アプリケーションを作成しており、メイン ページに新しいブラウザ ウィンドウを開いて Python スクリプトを実行するボタンを配置しています。これで、スクリプトが完了するまでに約 5 分かかります。その時間の前に応答を返すにはどうすればよいですか。ユーザーは何かが起こっていることを知り、少し時間がかかります。これが使用しているviews.pyの一部です。

ご協力ありがとうございました!

def redoScan(request):
   main()
   return HttpResponse("Submitted new scan job. New data will be displayed on main page in 5 minutes")
4

3 に答える 3

0

さて、実際に Javascript を使用して画面にステータスを書き込んでから、スキャンが完了すると新しいステータスをポストする AJAX 関数を呼び出します。それは実際にはそれほど悪くはありませんでした.AJAXを使用しているので、大したことではありません. その前に考えるべきだった。

とにかく助けてくれてありがとう!

于 2012-05-18T15:18:56.097 に答える
0

django-celery などのメッセージ キューを使用できます。おわかりのように、既に単純な django 統合が行われています。Celery を使用すると、「タスク」を非同期的にメッセージ キューに渡して処理することができます。これにより、ユーザーは待機することなく、時間のかかるプロセスを開始できます。

http://mathematism.com/2010/02/16/message-queues-django-and-celery-quick-start/

pahaz が示唆しているように、cron を使用してデータを集約することもできます。すべてのユーザーに対して定期的に同じ計算を行っている場合。次に、これをカスタム管理コマンドに簡単に変換し、データを中間テーブルに格納できます。そうすれば、ユーザーはデータを検索するだけで済み、データが処理されるのを待つ必要はありません。

于 2012-05-02T19:02:12.743 に答える
0

HttpResponse を返し、非同期にタスクを追加することができます。celary または cron またはその他のタスク マネージャーを使用する

于 2012-05-02T18:08:56.383 に答える