1

[開始]、[停止]、[一時停止]、[再開]の4つのボタンがあるHTMLページがあります。ボタンの機能は次のとおりです。

  • スタートボタン:バックエンドシミュレーターを起動します。(シミュレーターの実行には約3分かかります。)
  • 停止ボタン:シミュレーターを停止します。
  • 一時停止ボタン:シミュレーターを一時停止します。
  • 再開ボタン:一時停止した段階からシミュレーターを再開します。

クリックすると、各ボタンは個別のビュー関数を呼び出します。私が直面している問題は、スタートボタンをクリックすると、Pythonビューの関数呼び出しを介してシミュレーターが起動することです。しかし、前述したように、シミュレーターの実行が完了するまでに約3分かかります。したがって、3分間、私のUIは完全に応答しなくなります。Djangoの現在のビューがレンダリングされるまで、[停止]、[一時停止]、または[再開]ボタンを押すことができません。

では、この問題に取り組むための最良の方法は何ですか?シミュレーターの非ブロッキングプロセスを生成しますか?そうであれば、ビューがレンダリングされた後、生成された新しいプロセスが実行を完了したことをどのように知ることができますか?

4

2 に答える 2

1

You definitely need Ajax for the front-end.

For the backend you would use something like celery, with which you can execute asynchronous tasks(start/stop emulator). To communicate with celery, you could do it by polling, long polling or web sockets.

于 2012-11-01T13:28:41.037 に答える
0

最も簡単なのは、ajaxを使用してシミュレーターを起動することです。開始リクエストの応答は、同じページで更新できます。

ただし、以前の要求によって開始されたシミュレーターを一時停止、再開、および停止する方法については、引き続き検討する必要があります。つまり、シミュレータの状態を管理および操作する方法。

DBでそれを更新したいかもしれません。

于 2012-11-01T12:55:34.600 に答える