读书人

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

发布时间: 2012-08-25 10:06:20 作者: rapoo

修复一个线上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

?

?

小结:

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

?

?

?

?

?

?

?

读书人网 >编程

热点推荐