2012-03-28 9 views
1

私はアンケートへの登録を管理するために使用されるdjangoアプリを持っています。djangoスレッドの安全性に関する質問

スロット数は固定されており、ユーザー登録時にはスロットを予約したいと考えています。 私の見解では、次に利用可能なスロットを取得して予約します(利用可能なスロットがない場合はユーザーをリダイレクトします)。

同時に2人のユーザーが同時にサインアップするケースメソッド "get_next_available_slot"が両方のユーザーに対して同じスロットを返したため、同じスロットに登録されました。

これについては、私はDjangoのビューでプロセスとスレッドの使用を理解しようとしています。

1)リクエストは別のスレッドで処理されますか?PythonスレッドモジュールのLOCK()は排他アクセスを処理しますか?

2)modwsgiでRHEL上でApacheを実行しています。上記の状況を処理するためのより簡単で簡単なソリューションを確保するために、Apache/modwsgiをどのように設定するのですか?

私はWebアプリケーションに大きな負荷をまったく期待していません。ですから、私は高性能のソリューションではなく、より単純なソリューションを希望します。

+0

Apache/mod_wsgiのプロセス/スレッドモデルの背景についてはhttp://code.google.com/p/modwsgi/wiki/ProcessesAndThreadingを参照してください。 –

答えて

2

djangoアプリケーションのスレッド/プロセス設定については、使用しているWebサーバーとdjangoがどのように統合されているかによって異なります。したがって、プロセス間通信方法は、これらの詳細を信頼できるものにするべきではありません。 1つの良い解決策は、ロックおよび共有データのための組み込みキャッシュライブラリを使用することです。

ここには、キャッシュロックのgood exampleがあります。これは、一度に1度だけセロリのインスタンスが実行されるようにします。定期的なリクエストにも適用できます。

1

あなたはこの種のものについて心配するべきではありません。

これらのスロットはデータベースに格納されていますか?データベースはすべてのロック機構を処理する必要があります。トランザクションの下ですべてを実行することを忘れないでください。

関連する問題