def delete_cache(self, id): for key, result in self.search_results.iteritems(): result = loads(result) if isinstance(result, str) else result new_result = [] for item in result: if str(item.get('pk')) != str(id): self.delete_result(key) new_result.append(item) cache.hset(self.CACHE_RESULT_TAG, key, dumps(new_result))
def insert_cache(self, id): for key, result in self.search_results.iteritems(): result = loads(result) if isinstance(result, str) else result try: commercial = Commercial.objects.get(pk=id) self.delete_result(key) commercial = self.get_commercial_data(commercial) result.append(commercial) cache.hset(self.CACHE_RESULT_TAG, key, dumps(result)) except: pass
def update_cache(self, id): for key, result in self.search_results.iteritems(): result = loads(result) if isinstance(result, str) else result new_result = [] for item in result: if str(item.get('pk')) == str(id): self.delete_result(key) if self.MODEL == Commercial: commercial = Commercial.objects.get(pk=item.get('pk')) item = self.get_commercial_data(commercial) new_result.append(item) cache.hset(self.CACHE_RESULT_TAG, key, dumps(new_result))
def get_queryset(self): options = { 'active': True, } if settings.APPLICATION_CACHE: tag = Commercial.get_commercial_tag() if cache.hexists(tag, options): data = json.loads(cache.hget(tag, options)) else: data = self.get_list() cache.hset(Commercial.get_commercial_tag(), options, json.dumps(data)) else: data = self.get_list() return data
def get_queryset(self): options = { 'brand_id': self.request.GET.get('brand_id', ''), 'brand__entry': self.request.GET.get('brand__entry', ''), 'name': self.request.GET.get('name__icontains', ''), 'page': self.request.GET.get('page', '') } if settings.APPLICATION_CACHE and self.cache_status: str(self.request.GET.get('brand__entry', '')) if cache.hexists(Commercial.get_commercial_tag(), options): data = json.loads(cache.hget('commercial_list', options)) else: qs = super(CommercialListView, self).get_queryset() data = self.get_list(qs) cache.hset(Commercial.get_commercial_tag(), options, json.dumps(data)) else: qs = super(CommercialListView, self).get_queryset() data = self.get_list(qs) return data
def AppSendSms(request, account): SENDCOUNT = 'sendcount' # phone = redis_pool.hget(account, G_PHONE) adict = redis_pool.hgetall(account) # print "all key is",adict if G_PHONE not in adict: return HttpReturn(UnAuth) # redis_pool.hdel(account, G_PHONE) # print "phone number ", phone ### 同一号24小时只能发送三次短信. ### sendnum = redis_pool.hget(adict[G_PHONE], SENDCOUNT) # print "gettxt from redis", sendnum if sendnum and int(sendnum) == 3: return HttpReturn(SmsOverError) sendtime = redis_pool.hget(adict[G_PHONE], 'lastime') if sendtime and (time.time() - int(sendtime)) < settings.SESSION_COOKIE_AGE / 10: return HttpReturn(SmsIntervalError) # ipaddr = request.META.get('REMOTE_ADDR') ipobj, ok = IpAddress.objects.get_or_create( ipaddr=request.META.get(G_REMOTE_ADDR)) oldaddr = redis_pool.hget(account, G_IPADDR) if cmp(ipobj.ipaddr, oldaddr): return HttpReturn(IpAddrError) try: (sms, state) = sendsms.SendSMS(adict[G_PHONE]) except HTTPError: return HttpReturn(InternalError) except IndexError: SmsErrorLog.objects.create(-100, ipobj, timezone.now, adict[G_PHONE]) return HttpReturn(InternalError) if state == 0: redis_pool.expire(adict[G_PHONE], settings.SESSION_COOKIE_AGE) redis_pool.hset(adict[G_PHONE], 'lastime', int(time.time())) # redis_pool.expire(phone,settings.SESSION_COOKIE_AGE) if redis_pool.hget(adict[G_PHONE], SENDCOUNT): redis_pool.hincrby(adict[G_PHONE], SENDCOUNT, 1) else: redis_pool.hset(adict[G_PHONE], SENDCOUNT, 1) resetcode = hashlib.md5(adict[G_PHONE] + str(time.time())).hexdigest().upper() if G_REGISTER in adict: for (k, v) in adict.items(): redis_pool.hset(resetcode, k, v) redis_pool.hmset(resetcode, {G_PHONE: adict[G_PHONE], 'sms': sms}) # print "reset code dict is",redis_pool.hgetall(resetcode) redis_pool.expire(resetcode, settings.SESSION_COOKIE_AGE) redis_pool.hdel(account, G_PHONE) # 删除这个键,一次有效 return HttpReturn(json.dumps({G_OK: True, 'rescode': resetcode})) else: if state in ErrDict: errobj, ok = SmsErrorTable.objects.get_or_create(errcode=state, msg=ErrDict.get( state, u"未知错误")) SmsErrorLog.objects.create(errcode=errobj, ipaddr=ipobj, addtime=timezone.now(), phone=adict[G_PHONE]) if state in [10006, 10007, 10005]: return HttpReturn( json.dumps({ G_ERR: "OtherError", G_MSG: ErrDict[state] })) else: return HttpReturn(InternalError)