2

さて、私のコードは以下です。私は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の構成が不適切で、ビーカーを正しく使用していませんでしたか?

どうもありがとうございました。

4

0 に答える 0