【问题标题】:Session in webpy+apache doesn't workwebpy + apache中的会话不起作用
【发布时间】:2014-09-29 10:37:33
【问题描述】:

根据这个example我试图 创建使用会话的小 webapp。这行得通,但我认为会话有问题 它不起作用,因为在我的浏览器中,我总是在获取 /count 页面时看到 1,尽管它应该 每次我请求页面时都会增加。 另外,我尝试使用 DBStore 而不是 DiskStore,但得到了相同的结果。

你有任何猜测为什么会话不起作用? 也许我在请求/计数页面时总是得到新会话??

我使用 ubuntu 12.04、webpy 0.36、mod_wsgi 4.2 这是代码,apache config和error.log:

import web
import os

urls = (
'/count', 'count',
'/reset', 'reset'
)

web.config.debug = False
app = web.application(urls, globals(), autoreload=False)
curdir = os.path.dirname(__file__)
session = web.session.Session(app, 
web.session.DiskStore(os.path.join(curdir,'sessions')),initializer = {'count': 0})

application = app.wsgifunc()

class count:
    def GET(self):
        session.count += 1
        return str(session.count)

class reset:
    def GET(self):
        session.kill()
        return ""

----apache 配置------

<VirtualHost *:8080>

    DocumentRoot /var/www/webpy-app/documents
    AddType text/html .py

    <Directory /var/www/webpy-app/documents>
        Order deny,allow
        Allow from all
    </Directory>

    WSGIScriptAlias / /var/www/webpy-app/code.py/

    ErrorLog ${APACHE_LOG_DIR}/error.log

    LogLevel debug

    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

另外,我注意到 /session 中的会话文件不是在我请求 /count 页面时创建的,尽管它们应该是。

【问题讨论】:

    标签: python apache mod-wsgi web.py


    【解决方案1】:

    您的 Apache/mod_wsgi 配置意味着您的 Web 应用程序将是多进程的,因此请求可能每次都转到不同的进程。请改用 mod_wsgi 守护进程模式,并确保您只有一个进程(守护进程模式的默认设置)。

    Apache/mod_wsgi 进程也将以特殊用户身份运行,并且可能对您为会话文件指定的目录没有写入权限。

    【讨论】:

      【解决方案2】:

      您可能还需要在会话代码之前添加 cookie 路径。

      像这样:

      web.config.session_parameters['cookie_path'] = '/'

      然后:

      session = web.session.Session(app, web.session.DiskStore(os.path.join(curdir,'sessions')),initializer = {'count': 0})
      

      不知道为什么这不在文档中,但它应该可以工作。

      【讨论】:

      • 感谢您的回答,但它没有帮助!
      • 好的。然后不确定可能是什么问题。如果您愿意,可以使用 web.py 和会话查看这个快速登录示例:bitbucket.org/victorkohler/webpy-login/src
      猜你喜欢
      • 1970-01-01
      • 2020-10-10
      • 2012-06-10
      • 2011-01-07
      • 2013-12-28
      • 2018-10-30
      • 1970-01-01
      相关资源
      最近更新 更多