web.py入门纪要
web.py自带的服务器在调试模式下,session不能正常工作,因为调试模式支持模块重载入(重载入,绝非重载。是reload,而非override),所以reloader会载入主模块两次,因此,就会创建两个session对象。
为此,可以直接禁用调试模式,只要令web.config.debug = False即可。如果非要在调试模式下使用session,也有方法,我们只要把session存储在全局的数据容器中,就能避免二次创建session,如下:
import web, os, wsgiref.util, mimetypes, datetime def serve_static(filename, mime_type=None): ''' Serves a file statically ''' if mime_type is None: mime_type = mimetypes.guess_type(filename)[0] web.header('Content-Type', '%s' % mime_type) stat = os.stat(filename) web.header('Content-Length', '%s' % stat.st_size) web.header('Last-Modified', '%s' % web.http.lastmodified(datetime.datetime.fromtimestamp(stat.st_mtime))) return wsgiref.util.FileWrapper(open(filename, 'rb'), 16384) class Static(object): ''' Static file serving.''' def GET(self, name): return serve_static(os.path.join('mystatic', name)) urls = ( '/mystatic/(.*)', Static )