def _send_metric_data_and_requeue(self, account_id, campaign_id): """ If the WebSocket stream is still open then send the metric data and queue this method up again in the event loop. """ def _requeue(): tornado.ioloop.IOLoop.instance().add_timeout( datetime.timedelta(seconds=2), self.async_callback(self._send_metric_data_and_requeue, account_id, campaign_id) ) if self.paused: _requeue() else: multi_results = self.redis_client.mget( [ redis_keys.get_group_key(account_id, campaign_id, redis_keys.GROUP_CONTROL), redis_keys.get_group_key(account_id, campaign_id, redis_keys.GROUP_EXPERIMENT), redis_keys.get_total_sales_key(account_id, campaign_id, redis_keys.GROUP_CONTROL), redis_keys.get_total_sales_key(account_id, campaign_id, redis_keys.GROUP_EXPERIMENT), redis_keys.get_add_to_cart_key(account_id, campaign_id, redis_keys.GROUP_CONTROL), redis_keys.get_add_to_cart_key(account_id, campaign_id, redis_keys.GROUP_EXPERIMENT) ] ) rps_control, rps_experiment = self._get_session_value_values( account_id, campaign_id) aov_control, aov_experiment = self._get_order_value_values( account_id, campaign_id) group_control = multi_results[0] group_experiment = multi_results[1] add_to_cart_control, add_to_cart_experiment = self._get_add_to_cart_values( multi_results[4], multi_results[5], group_control, group_experiment) data = { 'group_control': group_control, 'group_experiment': group_experiment, 'total_sales_control': multi_results[2], 'total_sales_experiment': multi_results[3], 'order_value_control': aov_control, 'order_value_experiment': aov_experiment, 'add_to_cart_control': add_to_cart_control, 'add_to_cart_experiment': add_to_cart_experiment, 'session_control': rps_control, 'session_experiment': rps_experiment } if self.stream.closed(): pass else: self.write_message(data) _requeue()
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) redis_client.incrby(order_value_key_control, amount) if random.randint(0, 1) == 1: redis_client.incrby(order_value_key_experiment, random.randint(-1, 1)) time.sleep(0.1)
def add_to_group(self, account, cid, group): key = keys.get_group_key(account,cid, group) redis.incr(key)