コード例 #1
0
ファイル: handlers.py プロジェクト: mcginleyr1/realtime
    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()
コード例 #2
0
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)
コード例 #3
0
ファイル: recorder.py プロジェクト: mcginleyr1/realtime
 def add_to_group(self, account, cid, group):
     key = keys.get_group_key(account,cid, group)
     redis.incr(key)