def get_effect_data_topats(cls, shop_info_list): """ 获取店铺的所有计划的base数据 """ # 初始化异步报表下载 fail_shop_info_list = [] rpt_topats_list_mid = [] shop_info_list_mid = [] for shop_info in shop_info_list: try: campaign_ids = shop_info["campaign_ids"] effect_rpt_topats = EffectRptTopatsGet( shop_info["sid"], shop_info["nick"], shop_info["access_token"], shop_info["subway_token"], campaign_ids, ) effect_rpt_topats.generate_effect_task_id() except Exception, data: report_logger.exception("初始化异步报表出错") fail_shop_info_list.append(shop_info) continue rpt_topats_list_mid.append(effect_rpt_topats) shop_info_list_mid.append(shop_info) time.sleep(0.1)
def get_shop_infos_by_shop_ids(cls, in_shop_id_list): """ 根据店铺id获得店铺相应信息包括access_token,subway_token,nick """ shop_info_list = [] shop_info_db = ShopInfoDB(mongoConn) for shop_id in in_shop_id_list: shop_info = shop_info_db.get_shop_info_by_shop_id(shop_id) try: shop_info.update({"campaign_ids": RptAll.get_campaigns_by_shop_info(shop_info)}) except InvalidAccessTokenException, data: report_logger.error("nick [%s] access_token expired", shop_info["nick"]) continue except Exception, data: report_logger.exception("get campaign_ids failed") continue
def get_shop_infos_by_shop_ids(cls, in_shop_id_list): """ 根据店铺id获得店铺相应信息包括access_token,subway_token,nick """ shop_info_list = [] shop_info_db = ShopInfoDB(mongoConn) for shop_id in in_shop_id_list: shop_info = shop_info_db.get_shop_info_by_shop_id(shop_id) try: shop_info.update({ 'campaign_ids': RptAll.get_campaigns_by_shop_info(shop_info) }) except InvalidAccessTokenException, data: report_logger.error("nick [%s] access_token expired", shop_info['nick']) continue except Exception, data: report_logger.exception('get campaign_ids failed') continue
def get_effect_data(cls, shop_info_list): for shop_info in shop_info_list: try: if RptAll.is_effect_rpt_correct(shop_info): continue report_logger.info("店铺 [%s] 需要重新获取效果报表", shop_info["nick"]) rpt_effect_db = RptEffectDB(mongoConn, str(shop_info["sid"])) rpt_effect_db.clear_one_day_ago_rpt(RptAll.ONE_WEEK_AGO) rpt_effect_db.clear_one_day_rpt(RptAll.YESTERDAY) effect_rpt_get = EffectRptGet( shop_info["nick"], shop_info["access_token"], shop_info["subway_token"], shop_info["campaign_ids"] ) effect_rpt_list = effect_rpt_get.yesterday_rpt_get() rpt_effect_db.save_records(effect_rpt_list) report_logger.info("店铺 [%s] 重新获取效果报表完成,条数 %d", shop_info["nick"], len(effect_rpt_list)) except Exception, data: report_logger.exception("get effect data exception")
def get_effect_data_topats(cls, shop_info_list): """ 获取店铺的所有计划的base数据 """ #初始化异步报表下载 fail_shop_info_list = [] rpt_topats_list_mid = [] shop_info_list_mid = [] for shop_info in shop_info_list: try: campaign_ids = shop_info['campaign_ids'] effect_rpt_topats = EffectRptTopatsGet( shop_info['sid'], shop_info['nick'], shop_info['access_token'], shop_info['subway_token'], campaign_ids) effect_rpt_topats.generate_effect_task_id() except Exception, data: report_logger.exception('初始化异步报表出错') fail_shop_info_list.append(shop_info) continue rpt_topats_list_mid.append(effect_rpt_topats) shop_info_list_mid.append(shop_info) time.sleep(0.1)
def get_effect_data(cls, shop_info_list): for shop_info in shop_info_list: try: if RptAll.is_effect_rpt_correct(shop_info): continue report_logger.info("店铺 [%s] 需要重新获取效果报表", shop_info['nick']) rpt_effect_db = RptEffectDB(mongoConn, str(shop_info['sid'])) rpt_effect_db.clear_one_day_ago_rpt(RptAll.ONE_WEEK_AGO) rpt_effect_db.clear_one_day_rpt(RptAll.YESTERDAY) effect_rpt_get = EffectRptGet(shop_info['nick'], shop_info['access_token'], shop_info['subway_token'], shop_info['campaign_ids']) effect_rpt_list = effect_rpt_get.yesterday_rpt_get() rpt_effect_db.save_records(effect_rpt_list) report_logger.info("店铺 [%s] 重新获取效果报表完成,条数 %d", shop_info['nick'], len(effect_rpt_list)) except Exception, data: report_logger.exception('get effect data exception')
class RptAll(object): """ 根据店铺信息列表 获取所有的报表信息 """ YESTERDAY = '' ONE_WEEK_AGO = '' @classmethod def get_day_info(cls): RptAll.YESTERDAY = DateHandle.date_to_string( DateHandle.get_yesterday_date()) RptAll.ONE_WEEK_AGO = DateHandle.date_to_string( DateHandle.get_one_week_ago_date()) @classmethod def get_base_data_topats(cls, shop_info_list): """ 获取店铺的所有计划的base数据 """ #初始化异步报表下载 fail_shop_info_list = [] rpt_topats_list_mid = [] shop_info_list_mid = [] for shop_info in shop_info_list: try: campaign_ids = shop_info['campaign_ids'] base_rpt_topats = BaseRptTopatsGet(shop_info['sid'], shop_info['nick'], shop_info['access_token'], shop_info['subway_token'], campaign_ids) base_rpt_topats.generate_base_task_id() except Exception, data: report_logger.exception('初始化异步报表出错') fail_shop_info_list.append(shop_info) continue rpt_topats_list_mid.append(base_rpt_topats) shop_info_list_mid.append(shop_info) time.sleep(2) time.sleep(TOPATS_SLEEP_TIME) #time.sleep(20) #获取下载链接, 下载报表并存储 for i in range(0, len(shop_info_list_mid)): rpt_topats = rpt_topats_list_mid[i] try: if not rpt_topats.check_task_ok(): fail_shop_info_list.append(shop_info_list_mid[i]) if not rpt_topats.download_rpt(): fail_shop_info_list.append(shop_info_list_mid[i]) if not rpt_topats.parse_rpt(): fail_shop_info_list.append(shop_info_list_mid[i]) rpt_base_db = RptBaseDB(mongoConn, str(shop_info_list_mid[i]['sid'])) rpt_base_db.clear_one_day_ago_rpt(RptAll.ONE_WEEK_AGO) rpt_base_db.clear_one_day_rpt(RptAll.YESTERDAY) rpt_base_db.save_records(rpt_topats.rpt_record_list) except Exception, data: report_logger.exception('获取下载链接,抓取或存储出错') fail_shop_info_list.append(shop_info_list_mid[i]) time.sleep(0.2)
time.sleep(TOPATS_SLEEP_TIME) #time.sleep(20) #获取下载链接, 下载报表并存储 for i in range(0, len(shop_info_list_mid)): rpt_topats = rpt_topats_list_mid[i] try: if not rpt_topats.check_task_ok(): fail_shop_info_list.append(shop_info_list_mid[i]) if not rpt_topats.download_rpt(): fail_shop_info_list.append(shop_info_list_mid[i]) if not rpt_topats.parse_rpt(): fail_shop_info_list.append(shop_info_list_mid[i]) except Exception, data: report_logger.exception('获取下载链接,抓取或存储出错') fail_shop_info_list.append(shop_info_list_mid[i]) rpt_effect_db = RptEffectDB(mongoConn, str(shop_info_list_mid[i]['sid'])) rpt_effect_db.clear_one_day_ago_rpt(RptAll.ONE_WEEK_AGO) rpt_effect_db.clear_one_day_rpt(RptAll.YESTERDAY) rpt_effect_db.save_records(rpt_topats.rpt_record_list) time.sleep(2) return fail_shop_info_list @classmethod def get_campaigns_by_shop_info(cls, shop_info): """ 根据店铺信息获得店铺所有的计划信息
time.sleep(TOPATS_SLEEP_TIME) # time.sleep(20) # 获取下载链接, 下载报表并存储 for i in range(0, len(shop_info_list_mid)): rpt_topats = rpt_topats_list_mid[i] try: if not rpt_topats.check_task_ok(): fail_shop_info_list.append(shop_info_list_mid[i]) if not rpt_topats.download_rpt(): fail_shop_info_list.append(shop_info_list_mid[i]) if not rpt_topats.parse_rpt(): fail_shop_info_list.append(shop_info_list_mid[i]) except Exception, data: report_logger.exception("获取下载链接,抓取或存储出错") fail_shop_info_list.append(shop_info_list_mid[i]) rpt_effect_db = RptEffectDB(mongoConn, str(shop_info_list_mid[i]["sid"])) rpt_effect_db.clear_one_day_ago_rpt(RptAll.ONE_WEEK_AGO) rpt_effect_db.clear_one_day_rpt(RptAll.YESTERDAY) rpt_effect_db.save_records(rpt_topats.rpt_record_list) time.sleep(2) return fail_shop_info_list @classmethod def get_campaigns_by_shop_info(cls, shop_info): """ 根据店铺信息获得店铺所有的计划信息 """