Что не так с моим Beaker, WSGI, Apache2, Python? - PullRequest
2 голосов
/ 01 мая 2011

Хорошо, мой код указан ниже. Я работаю с 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, неправильно использовал мензурку, что?

Большое вам спасибо, ребята.

...