0

ウェブサイトに問題があります。そこにそれがある :

この場合は問題ありません:

  • ユーザーAがリクエストを実行します。
  • Djangoサーバーの更新データ...
  • オブジェクト1が更新されます。
  • オブジェクト2が更新されます。
  • オブジェクト3が更新されます。
  • Djangoは結果をレンダリングします。
  • ユーザーAがリクエストを実行します。

この場合、問題が発生します:

  • ユーザーAがリクエストを実行します。
  • Djangoサーバーの更新データ...
  • オブジェクト1が更新されます。
  • オブジェクト2が更新されます。
  • ユーザーAが別のリクエストを行います!
  • ユーザーAが別のリクエストを行います!
  • Djangoは結果をレンダリングします。

問題は、サーバーが動作を終了していないときにユーザーがリクエストを行うと、サーバーがプロセスを停止し、データが適切でなくなることです。

クライアント側をブロックする必要があると思いますが(たとえば、読み込みメッセージを表示することで)、別の処理がまだ機能している場合、ユーザーがサーバーでリクエストを実行できないことを確認したいと思います。

御時間ありがとうございます。

4

1 に答える 1

1

これは、長時間実行されているプロセスがあるように聞こえます。ユーザーは待つのに飽きて、ブラウザーで「停止」をクリックします。もう 1 つのシナリオは、ユーザーが別のタブを開き、同じ要求を再度送信することです。

この問題を解決するいくつかの方法。

  1. トランザクション ミドルウェアを使用して、リクエストが中断された場合にデータベース オブジェクトが破損しないようにします。

  2. celeryのようなタスク キューを使用します。最初のリクエストで、タスクをキュー/ブローカーにオフロードします。ユーザーの要求が処理のために受け入れられたというメッセージをユーザーに送信します。これで、ユーザーは自由に重複したリクエストを送信できます。その場合、キューのステータスを確認し、重複するリクエストを拒否できます。

于 2012-10-05T13:41:26.323 に答える