好的,所以我的代码如下。我正在使用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严重错误,没有正确使用烧杯,是什么?
非常感谢你们。