我的Beaker,WSGI,Apache2,Python出了什么问题?

时间:2011-05-01 04:20:41

标签: python apache mod-wsgi wsgi beaker

好的,所以我的代码如下。我正在使用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这样访问我的网页时,我会设置会话['value'],并且会打印出来,因为我可以看到我返回的内容。但是,在我设置会话['value']并决定注释掉该程序的以下部分后,请说

    #if not session.has_key('value'):
     #   session['value'] = 0
    #session.save()

保存,然后转到localhost / file.wsgi。我期待变量s,即= session ['value'],得到我之前设置的值。当我在更改并保存文件后5-15秒后转到localhost / file.wsgi时,会话中不再有“值”键,显然它不再具有值。显然,访问时间也会发生变化,但创建时间也会发生变化(每次刷新后都会发生变化)。

注意:我也尝试用

替换上面注释的部分程序部分
    if not session.has_key('value'):
        session['value'] = 0
    session['value'] += 1
    session.save()

我更改并访问localhost / file.wsgi后发生的事情是会话['value']会增加(预期),但随后它会突然跳转并在0处创建一个新会话['value']并再次增加,基本上这将创建多个会话['值'],但会话令牌'mysession'将保持不变。此外,每刷新一次,该值都会跳回到另一个会话['value']并保持在那里,然后跳转到另一个会话['value']。

我对正在发生的事情感到困惑,为什么我设置的会话['价值']没有保持不变,为什么创作时间不断变化,为什么会有多个创作,为什么会话会跳转?

顺便说一句,这在chrome和firefox上都是一样的。

我正在使用ubuntu 10.10,python 2.6,我假设最新版本或最新版本的beaker,apache2,mod_wsgi。

是我的编程问题,apache2严重错误,没有正确使用烧杯,是什么?

非常感谢你们。

0 个答案:

没有答案