def primeDesireCache(step, startKey = None, stopKey = None): import princeFunc if stopKey is None and startKey is None: startKey = 1 stopKey = int(meSchema.tradeCue.all(keys_only=True).order('-__key__').get().name()) elif stopKey is None or startKey is None: raise(BaseException('Must define both startKey and stopKey, or both must be None!')) memdict = {} clockKeyStep = step queryStr = princeFunc.getDesireQueryStr(max(step-405,0),step) desires = db.GqlQuery(queryStr).fetch(20000) for desire in desires: desirekey = desire.key().name() stckID = meTools.getStckID(desire.Symbol) cueKey = desirekey.split("_")[-2] # Extract cueKey from middle. memkey = 'desire_' + cueKey + '_' + str(stckID) step = int(desirekey.split("_")[0]) # Extract step from front part of desirekey. if not memdict.__contains__(memkey): memdict[memkey] = step elif memdict[memkey] < step: memdict[memkey] = step memcache.set_multi(memdict) cachepy.set_multi(memdict, priority = 1) cachepy.set('stepclock_' + str(startKey) + '_' + str(stopKey), clockKeyStep) # Manually syncing stepclock until get saner method.
def primeDesireCache(step): # Function to pull out last 400 steps of potential desires. import princeFunc memdict = {} queryStr = princeFunc.getDesireQueryStr(max(step-405,0),step) desires = db.GqlQuery(queryStr).fetch(20000) for desire in desires: # eval desire and pull out cmp(shares,0) and symbol for memcache desirekey = desire.key().name() desireDict = eval(desire.desire) for stock in desireDict: # Must convert symbol to id for memcaching. stckID = meSchema.getStckID(stock) buysell = cmp(desireDict[stock]['Shares'],0) algKey = desirekey.split("_")[-1] # Extract algKey from end. memkey = "desire_" + algKey + "_" + str(buysell) + "_" + str(stckID) step = int(desirekey.split("_")[0]) # Extract step from front part of desirekey. if not memdict.__contains__(memkey): memdict[memkey] = step elif memdict[memkey] < step: memdict[memkey] = step memcache.set_multi(memdict)