web.py使用session.DiskStore存储session的时候报EOFError异常解决方案
2014-11-14 03:41
369 查看
问题原因
由于多个线程同时读写session文件导致有线程的行为被拒绝报错,为了避免这种同时性问题,可以加一些延迟,或者每个线程有自己的副本,最后覆盖唯一的session
解决方案
https://github.com/webpy/webpy/issues/191 https://github.com/webpy/webpy/issues/83
方法一:
修改 session.py 里 session.DiskStore的 __setitem__ 方法
但是似乎在 win 下 rename 似乎不能直接覆盖目标文件,所以。
方法二:
由于多个线程同时读写session文件导致有线程的行为被拒绝报错,为了避免这种同时性问题,可以加一些延迟,或者每个线程有自己的副本,最后覆盖唯一的session
解决方案
https://github.com/webpy/webpy/issues/191 https://github.com/webpy/webpy/issues/83
方法一:
修改 session.py 里 session.DiskStore的 __setitem__ 方法
def __setitem__(self, key, value): path = self._get_path(key) pickled = self.encode(value) try: tname = path+"."+threading.current_thread().getName() f = open(tname, 'w') try: f.write(pickled) finally: f.close() os.rename(tname, path) # atomary operation except IOError: pass
但是似乎在 win 下 rename 似乎不能直接覆盖目标文件,所以。
方法二:
def __getitem__(self, key): path = self._get_path(key) if os.path.exists(path): while True: try: pickled = open(path).read() return self.decode(pickled) except EOFError: time.sleep(0.1) else: raise KeyError, key
相关文章推荐
- web.py在SAE中的Session问题解决方法(使用mysql存储)
- web.py在SAE中的Session问题解决方法(使用mysql存储)
- web.py XML访问 例子详解 AttributeError: No template named index 异常解决方案
- sqlalchemy在web.py中的session使用
- web.py下session初始化异常问题
- Spring异常:Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF
- webpy中使用session
- webpy使用笔记(二) session/sessionid的使用
- ajax的session失效异常的捕获(Sys.WebForms.PageRequestManagerParserErrorException)
- web.py 的session 没法使用吗?
- 解决web.py在SAE云中的Session使用问题
- java.lang.OutOfMemoryError: PermGen space及其解决方法【使用webservice请求web服务的时候报此错误】
- ASP.NET使用WEB关闭进程process.Kill(); 的时候,出现拒绝访问的提示解决方案
- webpy session debug 模式下无法使用
- 在Hibernate 4.3中如果使用了@Table注解,在获取session的时候会抛出如下异常解决办法
- ashx中使用session存储数据时报异常
- ASP.NET使用WEB关闭进程process.Kill(); 的时候,出现拒绝访问的提示解决方案
- SQLAlchemy Session Store webpy DBStore
- web.py 0.3 新手指南 - 在子应用下使用session
- ScrollView与WebView结合使用时,设置webview字体大小的时候出现下方留白的终极解决方案