有人可以告诉我
之间的区别urls = (
"/count", "count",
"/reset", "reset")
app = web.application(urls, locals())
store = web.session.DiskStore('sessions')
session = web.session.Session(app, store, initializer={'count': 0})
class count:
def GET(self):
session.count += 1
return str(session.count)
class reset:
def GET(self):
session.kill()
return ""
if __name__ == "__main__":
app.run()
和
urls = (
"/count", "count",
"/reset", "reset")
app = web.application(urls, locals())
class count:
counting = 0
def GET(self):
count.counting += 1
return str(count.counting)
class reset:
def GET(self):
count.counting = 0
return ""
if __name__ == "__main__":
app.run()
就我所知,他们的输出完全相同。如果没有区别那么使用Session对象比这样的变量有什么好处呢?
我是Python的新手,并且通过Zed Shaw的艰难学习Python。我正在练习52,当这个问题突然出现在我脑海中时,他会介绍会话。
答案 0 :(得分:1)
在第二个实例中,连接到您的应用程序的所有浏览器共享一个计数器。首先,每个浏览器根据自己的会话计算。
而且,正如kubked指出的那样,计数器在第一个实例中持久保存在磁盘上。
答案 1 :(得分:0)
据我所见,https://gitorious.org/lpthw-web/lpthw-web/source/b1ab4df58746c5d4e3dfb41e502a8192caec3ef1:web/session.py DiskStore会话将会话保存在文件系统中。如果服务器崩溃,您可以再次运行它并打开会话仍将存储。将数据保存在变量中,这意味着它将存储在RAM中,服务器崩溃会导致数据丢失。
当您决定使用线程时,保持会话中的用户数据也会更好。