Хорошо, мой код указан ниже. Я работаю с 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'], получит значение, которое я установила ранее. Когда я захожу в localhost / file.wsgi примерно через 5-15 секунд после того, как я изменяю и сохраняю файл, в сеансе больше нет ключа 'value', и, очевидно, он больше не имеет значения. Очевидно, что также изменяется время доступа, но время создания также изменяется (и изменяется после каждого обновления).
Примечание: я также попытался заменить часть программы, часть, которую я закомментировал выше, на
if not session.has_key('value'):
session['value'] = 0
session['value'] += 1
session.save()
Что произошло после того, как я изменил и получил доступ к localhost / file.wsgi, так это то, что сессия ['value'] будет увеличиваться (ожидается), но затем из ниоткуда она прыгнет и создаст новую сессию ['value'] в 0 и снова увеличиваем, и в основном это создаст несколько сеансов ['value'], но маркер сеанса 'mysession' останется прежним Также каждые несколько обновлений значения будут возвращаться к другому сеансу ['value'] и оставаться там, а затем переходить к другому сеансу ['value'].
Я так растерялся из-за того, что происходит, почему сеанс ['value'], который я установил, не остается установленным, почему время создания постоянно меняется, почему существует несколько созданий и почему сеансы перепрыгивают?
Кстати, это было одинаково и для Chrome, и для Firefox.
Я нахожусь на Ubuntu 10.10, Python 2.6, и я предполагаю, что самые новые или более новые версии beaker, apache2, mod_wsgi.
Это проблема моего программирования, плохо настроенный apache2, неправильно использовал мензурку, что?
Большое вам спасибо, ребята.