def get_group_value(group): d = self.redis_client.hgetall( redis_keys.get_order_value_key(account_id, campaign_id, group)) try: count = d['count'] if 'value' in d: if count: return float(d['value']) / float(count) else: return None else: return 0 except KeyError: return None
import os.path import random import sys import time sys.path.append(os.path.join(os.path.dirname(__file__), '..')) from monetate import keys from monetate.config import database redis_client = database.Redis().client ACCOUNT_ID = 52 CAMPAIGN_ID = 12345 order_value_key_control = keys.get_order_value_key(ACCOUNT_ID, CAMPAIGN_ID, keys.GROUP_CONTROL) order_value_key_experiment = keys.get_order_value_key(ACCOUNT_ID, CAMPAIGN_ID, keys.GROUP_EXPERIMENT) redis_client.incrby(order_value_key_control, 142) redis_client.incrby(order_value_key_experiment, 148) while True: redis_client.incr(keys.get_group_key(ACCOUNT_ID, CAMPAIGN_ID, keys.GROUP_CONTROL)) redis_client.incr(keys.get_total_sales_key(ACCOUNT_ID, CAMPAIGN_ID, keys.GROUP_CONTROL)) if random.randint(0, 1) == 1: redis_client.incr(keys.get_group_key(ACCOUNT_ID, CAMPAIGN_ID, keys.GROUP_EXPERIMENT)) redis_client.incr(keys.get_total_sales_key(ACCOUNT_ID, CAMPAIGN_ID, keys.GROUP_EXPERIMENT)) if random.randint(0, 1) == 1: amount = random.randint(-1, 1)
def purchase_total_update(self, account, cid, group, value): key = keys.get_order_value_key(account, cid, group) redis.hincrby(key, 'value', int(float(value))) redis.hincrby(key, 'count', 1)