webpy 项目推介:DoCute 服饰时尚导购平台 作者@yibin001
项目简介:
http://docute.com
DoCute 是一个分享穿着品味的时尚导购平台,在 DoCute 你可以和朋友一起发现、分享、购买喜爱的衣物; 还可以使用 DoCute 来寻找那些网络上、杂志上漂亮衣物的购买地址。如果你有经营一家时尚衣物的网店,也可以把你出售衣物的购买地址挂到 DoCute 上来,在分享穿着品味的同时还能为你的店铺提升收益…
技术体系:
数据库:mysql 部署环境:OS: Centos
WEB框架:
web.py。最开始想选择Django,但总觉得过于庞大,想找一个轻量级、可控性较好的框架,于是瞄上了web.py,非常容易上手。
数据库访问:
看过sqlalchemy,但最终放弃,最主要的原因是不大熟,怕使用不当。最后原生手写sql、配合web.database实现数据访问。
关于作者:
一直以“幻想曲”或“臭蛋”为网名,当过酒吧音乐人、人民教师,现供职于盛大网络。
主页:http://yibin.us/
豆瓣:http://www.douban.com/people/yibin001/
微博:http://t.sina.com.cn/n/yibin001
作者实现了一个文件缓存组件,下面这个是具体代码:
#!/usr/bin/env python # -*- coding: UTF-8 -*- #------------------------------------------------------------------------------- # Name: cachehelper # Purpose: # Author: yibin # # Created: 13-06-2010 # Copyright: (c) yibin 2010 # Licence:
#------------------------------------------------------------------------------- import os import config import web import util import time import cPickle as pickle try: import memcache except : pass class CacheHelper(object): def __init__(self,cachetype='filecache'): self.cache = None cachetype = cachetype.strip().lower() if cachetype == 'filecache': self.cache = FileCache() elif cachetype == 'memcache': self.cache = MemCache() if not self.cache: raise 'Cache Init Faild' self.cache.connect() def get(self,key,timeout=60): return self.cache.get(key,timeout) def set(self,key,value,timeout=0): self.cache.set(key,value) def flush(self,key): self.cache.flush(key) def __repr__(self): return self.cache class CacheBase(object): def __init__(self,**param): self.param = param def connect(self): pass def get(self,key,timeout=0): pass def set(self,key,value,timeout=0): pass def flush(self,key): pass class FileCache(CacheBase): def __init__(self,timeout=60): self._cachepath = os.path.join(config.siteroot,'_cache') self.timeout = timeout if not os.path.isdir(self._cachepath): try: os.mkdir(self._cachepath) except Exception,e: raise e def connect(self): pass def get(self,key,timeout=60): key = str(key) key = util.md5(key) self.timeout = timeout cachefile = os.path.join(self._cachepath,key).replace('\\','/') if os.path.isfile(cachefile): if time.time() - os.path.getmtime(cachefile) > self.timeout: return None f = open(cachefile,'r') val = pickle.loads(f.read()) f.close() return val return None def set(self,key,value,timeout = 0): key = str(key) key = util.md5(key) cachefile = os.path.join(self._cachepath,key).replace('\\','/') f = open(cachefile,'w') f.write(pickle.dumps(value)) f.close() def flush(self,key): key = str(key) key = util.md5(key) cachefile = os.path.join(self._cachepath,key).replace('\\','/') if os.path.isfile(cachefile): os.unlink(cachefile) def __repr__(self): return ' ' def __str__(self): return ' ' class MemCache(CacheBase): def __init__(self,server='116.211.25.59:11211',timeout=60): self.server = server self.mc = None def connect(self): self.mc = memcache.Client([self.server], debug=0) def set(self,key,value,timeout=60): key = util.md5(str(key)) if self.mc: return self.mc.set(key,value,timeout) return None def get(self,key,timeout = 0): if not self.mc: return None key = util.md5(str(key)) return self.mc.get(key) def flush(self,key): if self.mc: key = util.md5(str(key)) self.mc.delete(key) self.mc.set(key,None) def __repr__(self): return ' ' def __str__(self): return ' '
# 部分代码可能因为编排中出现错误,请有需要时直接与作者联系。>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。