0

ユーザーにランダムなアイテムが送信されるサイトを構築しています。各ビューには、最後に見られたものと次のランダム ピックがどのカテゴリからのものかに関する多くの変数の更新が含まれます。しかし、考えてみると、このコードはリクエストが次々と発生した場合にのみ機能し、ユーザーが並行してリクエストを行うと問題が発生すると感じました。この問題が本当なのか、それとも django が並列リクエストをキューに入れることによって処理するのか疑問に思っています。これが本当なら、新しいリクエスト (2 番目または 3 番目の並列リクエスト) を「セッション ページごとに 1 つのリクエスト」にリダイレクトすることを考えています。ユーザーが並列リクエストを作成してロジックを中断する可能性は低いことはわかっていますが、それでも対処する必要があります。

4

2 に答える 2

0

これらの決定を行うのは Django の仕事ではありません。これは、使用するサーバー テクノロジ (nginx、gunicorn、postgresql など) と関係があります。

Web アプリが機能するようにアプリを設計する場合 (つまり、ステートレス)、心配する必要はなく、同時実行に関連するすべてのものは、「単一の信頼できる情報源」から透過的に処理する必要があります。データベース。

Web アプリの設計/ロジックがこれらの原則に従っていない場合は、おそらく欠陥があるため、再設計する必要があります。

あなたのアプリが特殊なケースだと本当に思うなら、もっと具体的な例をいくつか教えてください。

于 2012-12-31T13:41:17.267 に答える
0

Django アプリケーションでは、同じユーザーに対する並列リクエストが可能であるため、自分で処理する必要があります。良い原則は、バックエンドに状態を持たないようにすることです。状態を処理するためにフロントエンドを再設計できるかどうかを検討してください。ただし、これが常に可能であるとは限りません。

バックエンドで状態を保持する 1 つの方法は、Memcached、MongoDB、Redis などの高速なメモリ内データベースを使用することです。これらが正しく使用されれば、アトミック操作が可能になると思います。1 つのオプションは、アトミック操作を公開するDjangos キャッシュ フレームワークを使用することです(少なくとも memcached によってサポートされている場合)。

于 2012-12-31T16:20:50.197 に答える