4

私のアプリには、要求されたときにクライアントに提供されるまでにかなりの時間がかかるビューが 1 つあります。サーバーが動作していることをユーザーに知らせるために、プログレスバーのようなものをユーザーに表示したいのですが、実際にはプログレスバーではなく、次のようになります。

a) クライアントが /myapp/longrunningview/ をリクエストしている

b) サーバーは、サーバーが動作しているように見えるアニメーションを含む、html 側の一部を返します。サーバーが残りの応答を計算しているのと同時に、このプロセスには非常に時間がかかります

c) サーバーが終了し、クライアントに応答を返します

d) クライアント側で応答が提示される

ユーザーはアプリ外のページからこのページを要求する可能性があるため、実際には進行状況バーではありません。プロセス全体が完了するのを待たずに、すぐに何かをユーザーに返したいと考えています。私が見つけた進行状況バーの実装はすべて、応答を待っている間にクライアントが進行状況バーを表示している間にサーバーに送信されるフォームに基づいています。

4

1 に答える 1

3

この種のことにはセロリタスクを使用します。ユーザーがリクエストを作成したら、タスクを開始し、進行状況スピナーなどでページを送り返します。次に、AJAX の一部を数秒ごとにサーバーにヒットさせて、完了したかどうかを尋ねるか、socketio と django-socketio または同様のパッケージを使用して、「完了」通知をクライアントにプッシュし、必要な場所にリダイレクトできます。

資力:

于 2012-09-26T12:03:51.300 に答える