好的,我的代码如下。我正在使用 apache2、mod_wsgi、烧杯、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 之类的网页时,我将设置 session['value'] 并将其打印出来,正如您从我返回的内容中看到的那样。但是,说在我设置 session['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 后发生的事情是 session['value'] 会增加(预期),但随后它会突然跳转并在 0 处创建一个新 session['value'] 并再次增加,基本上这会创建多个会话['value'],但会话令牌'mysession'将保持不变。此外,每隔几次刷新,该值就会跳回另一个会话 ['value'] 并停留在那里,然后跳转到另一个会话 ['value']。
我对正在发生的事情感到非常困惑,为什么我设置的 session['value'] 没有保持不变,为什么创建时间不断变化,为什么会有多个创建,为什么会话会跳来跳去?
顺便说一句,这在 chrome 和 firefox 上都是一样的。
我在 ubuntu 10.10、python 2.6 上,我假设烧杯、apache2、mod_wsgi 的最新版本或最新版本。
是我的编程问题,apache2 配置错误,没有正确使用烧杯,什么?
非常感谢你们。