首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

修复一个线下1万6千次异常的bug

2012-08-25 
修复一个线上1万6千次错误的bugdef get_root(self):try:self.photoexcept:returnkey photo:root:%s: %

修复一个线上1万6千次错误的bug

def get_root(self): try: self.photo except: return key = "photo:root:%s:" % self.photo.id root = cache.get(key) if root is None: try: root = self.category in [1, 9] and \ self or Message.objects.get(photo__id=self.photo_id, category__in=[1, 9], status__in=[0, 6])[0] except Message.DoesNotExist: pass if root: cache.set(key, root, 3600 * 2) return root and root.status != 5 and root or None

?里面的get其实存在大于1这种情况的。修改为:

?

   if root is None:            try:                root = self.category in [1, 9] and \                    self or Message.objects.filter(photo__id=self.photo_id, category__in=[1, 9], status__in=[0, 6])[0]            except Message.DoesNotExist:                pass            except IndexError:                pass

?

?

小结:

? ? 对于这种业务上的唯一性,一定要通过数据库保证唯一性约束

?

?

?

?

?

?

?

热点排行