#python #apache #mod-wsgi #wsgi #beaker
#python #apache #мод-wsgi #wsgi #стакан
Вопрос:
Хорошо, итак, мой код приведен ниже. Я работаю с 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, я устанавливаю session [‘значение’], и оно будет напечатано, как вы можете видеть из того, что я возвращаю. Однако, скажем, после того, как я установлю session [‘значение’] и решу прокомментировать следующую часть программы,
#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’] Мой set не остается установленным, почему время создания постоянно меняется, почему существует несколько созданий и почему сеансы менялись местами?
кстати, это было одинаково как в Chrome, так и в Firefox.
Я использую ubuntu 10.10, python 2.6, и я предполагаю, что это самые новые или около последних версий beaker, apache2, mod_wsgi.
Это проблема моего программирования, плохо настроенный apache2, неправильно использовал beaker, что?
Большое вам спасибо, ребята.
Комментарии:
1. Я не совсем уверен, что здесь не так, но мне было любопытно узнать, перезапускали ли вы процесс wsgi при изменении кода.
2. Кроме того, вы могли бы переписать это: попробуйте: s = session[‘value’] за исключением: s = «значение не найдено» как s = session.get(‘value’, «значение не найдено»)
3. я пробовал это, выполняя код, затем комментируя его без перезапуска apache, а также с перезапуском apache, оба дали одинаковые результаты.