2012-03-02 37 views
4

私は存在するフレームワークがあることを知っていますが、自分の理解を向上させるためにwsgiを直接使用しようとしています。PythonとApacheでのグローバル変数mod_wsgi

私は私のwsgiハンドラを持っていて、上の方で変数i = 0を宣言しています。

私のapplication(environ, start_response)関数では、global iと宣言してから、ボタンを押すたびにiをインクリメントします。

この変数の状態は、サーバーが稼働している限り保持されているため、Webアプリケーションのすべてのユーザーは同じiと表示されます。

iapplication関数内に宣言すると、要求が行われるたびにiの値が0にリセットされます。

私は、iを1人のユーザーの要求の間にどのように保存しますが、それは異なるユーザーのセッション間で保持しないのでしょうか?したがって、1人のユーザーが複数の投稿を作成でき、iが増えますが、別のユーザーがウェブアプリにアクセスすると、i=0で始まります。

そして、投稿間にデータベースにiを格納することができますが、投稿間にはiをメモリに保存することは可能ですか?

+2

、http://code.google.com/p/modwsgi/wiki/ProcessesAndThreadingより関連部分を見て、まだコンテキストのための残りを読むことが重要終わりに向かっていますが、。 –

答えて

3

ウェブアプリケーションは、一般的に「共用なし」です。 WSGIのコンテキストでは、アプリケーション(およびそれに伴うカウンタ)がインスタンス化される回数がわからないことを意味します。その選択は、あなたのアプリのコンテナとして機能するWSGIサーバーに依存します。

ユーザーセッションの概念が必要な場合は、明示的に、通常はクッキーの上に実装する必要があります。永続性が必要な場合は、明示的にサポートするコンポーネントが必要です。共有データベースにすることもできますし、クッキーセッションでピギーバックすることもできます。

1

WSGIセッションmiddlewareを追加し、これらの値を保存します。いくつかの関連のバックグラウンド読み取りのために