sleep(30)
ビューの最初の行に追加しようとしました。その後、このページを2つのブラウザタブで開きました。最初のタブは30秒後にページをロードし、2番目のタブは60秒後にページをロードしました。その間、私は別のPCからページをうまく開くことができました。したがって、Djangoは同じクライアントからの同時リクエストをブロックしているように見えます。
これは私のアプリにとって非常に良いことです。そして、私は私のサイトが将来このように機能することを確認したいと思います。ただし、そのようなDjangoの動作を説明するドキュメントや記事は見つかりませんでした。ですから、これが機能なのか、それとも単なる幸運なのかはまだわかりません。誰かがこれがどのようにそしてなぜ機能するのか説明してもらえますか?
実際に必要なのは、ビューの処理中にセッションをブロックすることです。もちろん、いくつかのフラグまたはデータベーストランザクションを使用できます。ただし、Djangoにすでに実装されている機能は追加したくありません。
私はpython2.6.5、django 1.4、ubuntuサーバー、nginx、uwsgiを使用しています。postgresqlとsqliteの両方を試しました。
私のuwsgi設定:
<uwsgi>
<pythonpath>/home/admin/app/src</pythonpath>
<app mountpoint="/">
<script>deploy.wsgi</script>
</app>
<workers>4</workers><!-- Not sure this is needed -->
<processes>2</processes>
</uwsgi>
runserverコマンドでも同じ効果が得られました。