さて、私のコードは以下です。私はapache2、mod_wsgi、beaker、pythonで作業しています
def application(environ, start_response):
session = environ['beaker.session']
if not session.has_key('value'):
session['value'] = 0
session.save()
try:
s = session['value']
except:
s = "value not found"
start_response('200 OK', [('Content-type', 'text/html')])
#response = "<br />".join(environ)
beaker = "<br />".join(session)
try:
cookie = "".join(environ['HTTP_COOKIE'])
except:
cookie = ""
return [cookie,'<br />', str(s), '<br />', beaker, '<br /> accessed:',
str(session['_accessed_time']), '<br /> creation:',
str(session['_creation_time'])]
from beaker.middleware import SessionMiddleware
application = SessionMiddleware(
application,
key='mysession',
secret='blah',
)
localhost/file.wsgi のような Web ページにアクセスすると、session['value'] が設定され、結果からわかるように出力されます。ただし、 session['value'] を設定し、プログラムの次の部分をコメントアウトすることにした後、
#if not session.has_key('value'):
# session['value'] = 0
#session.save()
保存して、localhost/file.wsgi に移動します。=session['value'] である変数 s が、以前に設定した値を取得することを期待していました。ファイルを変更して保存してから 5 ~ 15 秒後に localhost/file.wsgi に移動すると、セッションに「値」キーがなくなり、明らかに値がなくなります。また、変更されるのは明らかにアクセス時間ですが、作成時間も変更されます (更新のたびに変更されます)。
注:プログラムの一部、上記でコメントアウトした部分を次のように置き換えてみました
if not session.has_key('value'):
session['value'] = 0
session['value'] += 1
session.save()
変更して localhost/file.wsgi にアクセスした後に起こったことは、セッション ['値'] がインクリメント (予想) されることでしたが、どこからともなくジャンプして新しいセッション ['値'] を 0 で作成し、再びインクリメントします。 、そして基本的にこれは複数のセッション ['値'] を作成しますが、セッション トークン 'mysession' は同じままです。また、数回更新するたびに、値が別のセッション ['値'] にジャンプして戻り、そこにとどまってから別のセッション ['値'] にジャンプします。
何が起こっているのかとても混乱しています。設定したセッション ['value'] が設定されたままにならないのはなぜですか。なぜ作成時間が変化し続けるのですか。なぜ複数の作成があるのですか。
ところで、これはchromeとfirefoxの両方で同じでした。
私はubuntu 10.10、python 2.6を使用しています.beaker、apache2、mod_wsgiの最新または最新バージョンを想定しています。
それは私のプログラミングの問題ですか、apache2の構成が不適切で、ビーカーを正しく使用していませんでしたか?
どうもありがとうございました。