You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

《笨办法学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()

一、运行配置步骤

  1. 安装web.py依赖
    首先确保你的Python环境里安装了web.py库,打开终端执行:

    pip install web.py
    

    如果是Python3环境,部分系统可能需要用pip3替代pip。

  2. 创建会话存储目录
    在你的脚本文件所在的文件夹下,手动创建一个名为sessions的空目录。因为代码里用了web.session.DiskStore('sessions'),它会把会话数据以文件形式存在这个目录里,没有这个目录的话,运行时会直接抛出IO错误。

  3. 修复代码中的两处错误

    • urls元组里的两个路径条目之间缺少逗号,正确写法应该是:
      urls = (
          "/count", "count",
          "/reset", "reset"
      )
      
      没有逗号会触发Python语法错误,脚本根本跑不起来。
    • 初始化Session时的参数拼写错误:initialzer → initializer,这个参数用来设置会话的初始值,拼写错误会导致count的初始值不生效。
  4. 启动脚本
    在终端进入脚本所在目录,执行:

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:55:08