《笨办法学Python》练习52:会话计数代码运行配置疑问
运行《笨办法学Python》练习52中web.py会话计数代码的配置与注意事项
刚好熟悉这段web.py的代码,来帮你梳理清楚运行配置和需要注意的细节:
首先先贴出你提供的原代码(里面有两处小错误后面会重点说明):
import web web.config.debug = False urls = ( "/count", "count" "/reset", "reset" ) app = web.application(urls, locals()) store = web.session.DiskStore('sessions') session = web.session.Session(app, store, initialzer = {'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()
一、运行配置步骤
安装web.py依赖
首先确保你的Python环境里安装了web.py库,打开终端执行:pip install web.py如果是Python3环境,部分系统可能需要用
pip3替代pip。创建会话存储目录
在你的脚本文件所在的文件夹下,手动创建一个名为sessions的空目录。因为代码里用了web.session.DiskStore('sessions'),它会把会话数据以文件形式存在这个目录里,没有这个目录的话,运行时会直接抛出IO错误。修复代码中的两处错误
urls元组里的两个路径条目之间缺少逗号,正确写法应该是:
没有逗号会触发Python语法错误,脚本根本跑不起来。urls = ( "/count", "count", "/reset", "reset" )- 初始化Session时的参数拼写错误:
initialzer→initializer,这个参数用来设置会话的初始值,拼写错误会导致count的初始值不生效。
启动脚本
在终端进入脚本所在目录,执行:python your_script_name.py把
your_script_name.py换成你的实际文件名即可。启动后可以访问http://localhost:8080/count测试计数功能,访问http://localhost:8080/reset重置会话。
二、关键注意事项
- 保持调试模式关闭:代码里已经设置
web.config.debug = False,这个非常关键。如果打开debug=True,web.py会在每次请求后重启服务器,导致会话数据丢失,你访问/count时计数永远会是1,无法正常累加。 - 目录权限问题:确保
sessions目录对当前运行Python的用户有读写权限。如果权限不足,web.py无法写入会话文件,会抛出权限错误。 - 端口占用处理:web.py默认使用8080端口,如果这个端口被其他程序占用,运行时会报错。可以修改
app.run()的参数指定其他端口,比如:if __name__ == "__main__": app.run(port=8081) - 会话数据持久化:用
DiskStore存储的会话数据会保存在sessions目录的文件里,即使重启服务器,只要不删除这些文件或者调用/reset接口,会话计数会保持之前的数值。如果需要清空所有会话,直接删除sessions目录下的所有文件即可。 - Python版本兼容:web.py现在已支持Python3,但如果你用的是非常老的Python2版本,可能需要安装对应版本的web.py(比如web.py 0.37),更建议使用Python3环境。
内容的提问来源于stack exchange,提问作者user9583010
相关产品推荐
相关产品推荐

