似乎 web.py 会话在应用程序中而不是在客户端中
seems like web.py sessions are in app rather than on client
所以下面的代码或多或少来自http://webpy.org/cookbook/session
如果我 运行 该应用程序正常工作,即每次刷新时计数器递增 1,但是如果我在隐身 window 或其他网络浏览器中访问该应用程序,计数器会不重置。在我看来,会话似乎没有像应该的那样用 count: 0 初始化。是什么导致新会话采用其他客户端中会话的值?
import web
web.config.debug = False
urls = (
"/", "count",
"/reset", "reset"
)
app = web.application(urls, locals())
session = web.session.Session(app, web.session.DiskStore('sessions'),
{'count': 0})
session_data = session._initializer
class count:
def GET(self):
session_data['count'] += 1
return str(session_data['count'])
class reset:
def GET(self):
session.kill()
return ""
if __name__ == "__main__":
app.run()
会话应该存储在客户端上,但是当我执行这段代码时,它似乎在服务器上,这意味着只有一个用户可以使用该应用程序,我必须重新运行该应用程序重置计数器。
我已经将近一个星期没能解决这个问题了。请帮忙。
该示例具有从初始 session
变量创建的会话。例如,session.count += 1
会将当前 session
的 count
加 1。在您的代码中,您为每个用户更改 session_data
。文档演示使用初始值设定项创建会话变量的方式是:
session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'count': 0})
因此,文档建议不要执行 session_data['count'] += 1
,而是执行 session['count'] += 1
或 session.count += 1
。您还需要更新 Index
.
中的 return
行
我测试并确认这对我有用。
所以下面的代码或多或少来自http://webpy.org/cookbook/session
如果我 运行 该应用程序正常工作,即每次刷新时计数器递增 1,但是如果我在隐身 window 或其他网络浏览器中访问该应用程序,计数器会不重置。在我看来,会话似乎没有像应该的那样用 count: 0 初始化。是什么导致新会话采用其他客户端中会话的值?
import web
web.config.debug = False
urls = (
"/", "count",
"/reset", "reset"
)
app = web.application(urls, locals())
session = web.session.Session(app, web.session.DiskStore('sessions'),
{'count': 0})
session_data = session._initializer
class count:
def GET(self):
session_data['count'] += 1
return str(session_data['count'])
class reset:
def GET(self):
session.kill()
return ""
if __name__ == "__main__":
app.run()
会话应该存储在客户端上,但是当我执行这段代码时,它似乎在服务器上,这意味着只有一个用户可以使用该应用程序,我必须重新运行该应用程序重置计数器。
我已经将近一个星期没能解决这个问题了。请帮忙。
该示例具有从初始 session
变量创建的会话。例如,session.count += 1
会将当前 session
的 count
加 1。在您的代码中,您为每个用户更改 session_data
。文档演示使用初始值设定项创建会话变量的方式是:
session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'count': 0})
因此,文档建议不要执行 session_data['count'] += 1
,而是执行 session['count'] += 1
或 session.count += 1
。您还需要更新 Index
.
return
行
我测试并确认这对我有用。