def post(self): from collections import defaultdict payload_string = self.request.get('payload') counter_targets = Payload.deserialize(payload_string) today = time_util.today() product_targets = defaultdict(int) user_targets = defaultdict(int) for payload in counter_targets: daily_product_key = ProductCounter.build_key_name( payload.url, DAILY, today) weekly_product_key = ProductCounter.build_key_name( payload.url, WEEKLY, today) monthly_product_key = ProductCounter.build_key_name( payload.url, MONTHLY, today) user_key = UserCounter.build_key_name(payload.user_id, DAILY, today) product_targets[daily_product_key] += 1 product_targets[weekly_product_key] += 1 product_targets[monthly_product_key] += 1 user_targets[user_key] += 1 product_counters = ProductCounter.get_by_key_name( product_targets.keys(), _storage=[MEMCACHE, DATASTORE], _result_type=NAME_DICT) user_counters = UserCounter.get_by_key_name(user_targets.keys(), _result_type=NAME_DICT) for key_name, delta in product_targets.iteritems(): try: product_counters[key_name].count += delta except AttributeError: #Value is None in dict frequency = ProductCounter.frequency_from_key_name(key_name) product_counters[key_name] = ProductCounter.new( key_name, frequency, today, count=delta, _build_key_name=False) for key_name, delta in user_targets.iteritems(): try: user_counters[key_name].count += delta except AttributeError: #Value is None in dict user_counters[key_name] = UserCounter.new( key_name, DAILY, today, count=delta, _build_key_name=False) ProductCounter.filtered_update(product_counters.values()) UserCounter.filtered_update(user_counters.values())
def get(self): date = yesterday() enqueue_renderer_update(WEEKLY,date) enqueue_renderer_update(MONTHLY,date) enqueue_cleanup(UserCounter.kind(), DAILY, date) enqueue_cleanup(ProductCounter.kind(), DAILY, date) enqueue_cleanup(ProductRenderer.kind(), DAILY, date) enqueue_cleanup(ProductRenderer.kind(), WEEKLY, date,countdown = 3600) enqueue_cleanup(ProductRenderer.kind(), MONTHLY, date,countdown = 3600) #Delete banlist so it is refreshed with latest banned entities banlist = Banlist.retrieve() banlist.delete()
def post(self): from collections import defaultdict payload_string = self.request.get('payload') counter_targets = Payload.deserialize(payload_string) today = time_util.today() product_targets = defaultdict(int) user_targets = defaultdict(int) for payload in counter_targets: daily_product_key = ProductCounter.build_key_name(payload.url, DAILY, today) weekly_product_key = ProductCounter.build_key_name(payload.url, WEEKLY, today) monthly_product_key = ProductCounter.build_key_name(payload.url, MONTHLY, today) user_key = UserCounter.build_key_name(payload.user_id, DAILY, today) product_targets[daily_product_key] += 1 product_targets[weekly_product_key] += 1 product_targets[monthly_product_key] += 1 user_targets[user_key] += 1 product_counters = ProductCounter.get_by_key_name(product_targets.keys(), _storage = [MEMCACHE,DATASTORE], _result_type=NAME_DICT) user_counters = UserCounter.get_by_key_name(user_targets.keys(), _result_type=NAME_DICT) for key_name,delta in product_targets.iteritems(): try: product_counters[key_name].count += delta except AttributeError: #Value is None in dict frequency = ProductCounter.frequency_from_key_name(key_name) product_counters[key_name] = ProductCounter.new(key_name, frequency, today, count=delta,_build_key_name = False) for key_name,delta in user_targets.iteritems(): try: user_counters[key_name].count += delta except AttributeError: #Value is None in dict user_counters[key_name] = UserCounter.new(key_name, DAILY, today, count=delta,_build_key_name = False) ProductCounter.filtered_update(product_counters.values()) UserCounter.filtered_update(user_counters.values())
def get(self): renderers = PRODUCT_RENDERER_BAN_TARGETS.fetch(100) products = [Product(key_name = renderer.key_root) for renderer in renderers] product_counters = [] for renderer in renderers: product_counters.append(ProductCounter( key_name = renderer.key().name(), is_banned = True, day = renderer.day, week = renderer.week, month = renderer.month, year = renderer.year)) renderer.is_ban_synched = True targets = [product.key().name() for product in products] ban_list = Banlist.retrieve() ban_list.products += targets ban_list.put(_storage=[MEMCACHE,DATASTORE]) pdb.put(products+renderers+product_counters,_storage = [MEMCACHE,DATASTORE])
def get(self): date = yesterday() enqueue_cleanup(ProductCounter.kind(), MONTHLY, date,countdown = 3600)