ソースを参照

MOD:修改user_action 出错逻辑

cxyu 3 年 前
コミット
975f5fb88b
2 ファイル変更37 行追加30 行削除
  1. 29 27
      web_module/user_action.py
  2. 8 3
      wechat_action/login_ad.py

+ 29 - 27
web_module/user_action.py

@@ -28,49 +28,51 @@ def carry_plan(user_id, ad_plan_list, log_ad, db, cookie_canuse, task_name):
 
         # cookies保存
         if not cookie_canuse:
-            log_ad.cookies_save(log_ad,sql_session)
+            log_ad.cookies_save(log_ad, sql_session)
         for _ in ad_plan_list:
             service_name = _['service_name']
             wechat_name = _['wechat_name']
             plan_name = _['title']
             try:
-                # 1.检查1.落地页是否创建过了
-                log_ad.select_ad_master(service_name, wechat_name,sql_session)
                 # 现在默认layout_name在30个字符以内
                 layout_name = _['idea']['jump_type_page_type']['layout_name']
-                if CreateAd.check_sucess_api(layout_name=layout_name, log_ad=log_ad):
-                    res = {'sucess': True, 'result_info': '已经创建过对应落地页'}
-                    sql_tools.action_record(res, sql_session, layout_create_action, user_id, layout_name,
-                                            action_record_table,
-                                            service_name, wechat_name, task_name)
-
-                else:
-                    # 1.5无则创建落地页
-                    try:
+                try:
+                    # 1.检查1.落地页是否创建过了
+                    log_ad.select_ad_master(service_name, wechat_name, sql_session)
+                    if CreateAd.check_sucess_api(layout_name=layout_name, log_ad=log_ad):
+                        logging.info('{},落地页已经对应进行创建'.format(plan_name))
+                        res = {'sucess': True, 'result_info': '已经创建过对应落地页'}
+                        sql_tools.action_record(res, sql_session, layout_create_action, user_id, layout_name,
+                                                action_record_table,
+                                                service_name, wechat_name, task_name)
+                    else:
+                        # 1.5无则创建落地页
                         create_ad_layout = CreateAd(login_ad=log_ad, service_name=service_name, wechat_name=wechat_name)
                         layout_typesetting_dict = sql_tools.get_layout_typesetting(sql_session, user_id,
                                                                                    typesetting_name=layout_name)
                         layout_typesetting_dict = json.loads(layout_typesetting_dict)
-                        res = create_ad_layout.create_layout(layout_typesetting_dict,sql_session)
-                        sql_tools.action_record(res, sql_session, layout_create_action, user_id, layout_name,
-                                                action_record_table,
-                                                service_name, wechat_name, task_name)
-                    except Exception as e:
-                        res = {'sucess': False, 'result_info': str(e)}
-                        logging.error('layout 创建失败,{}'.format(str(e)))
-                        # 创建落地页,计划都失败
+                        res = create_ad_layout.create_layout(layout_typesetting_dict, sql_session)
                         sql_tools.action_record(res, sql_session, layout_create_action, user_id, layout_name,
                                                 action_record_table,
                                                 service_name, wechat_name, task_name)
-                        res = {'sucess': False, 'result_info': '落地页创建失败'}
-                        sql_tools.action_record(res, sql_session, ad_plan_create_action, user_id, plan_name,
-                                                action_record_table,
-                                                service_name, wechat_name, task_name)
-                        continue
+                except Exception as e:
+                    res = {'sucess': False, 'result_info': str(e)}
+                    logging.error('layout 创建失败,{}'.format(str(e)))
+                    # 创建落地页,计划都失败
+                    sql_tools.action_record(res, sql_session, layout_create_action, user_id, layout_name,
+                                            action_record_table,
+                                            service_name, wechat_name, task_name)
+                    res = {'sucess': False, 'result_info': '落地页创建失败'}
+                    sql_tools.action_record(res, sql_session, ad_plan_create_action, user_id, plan_name,
+                                            action_record_table,
+                                            service_name, wechat_name, task_name)
+                    dingtalk.send_message('user_id:{} 落地页创建出错,进行检查\n{}'.format(user_id, str(e)))
+
+                    continue
 
                 log_ad.refresh_driver()
                 # 3.创建计划
-                log_ad.select_ad_master(service_name, wechat_name,sql_session)
+                log_ad.select_ad_master(service_name, wechat_name, sql_session)
                 # plan_typesetting_dict = sql_tools.get_ad_plan_typesetting(sql_session=sql_session, user_id=user_id,
                 #                                                           typesetting_name=plan_name)
                 create_ad_plan = CreateAdPlan(login_ad=log_ad, task=_, service_name=service_name,
@@ -123,7 +125,7 @@ def get_human_info(user_id, log_ad, db, cookie_canuse, task_name):
     try:
         # 1.cookies保存
         if not cookie_canuse:
-            log_ad.cookies_save(log_ad,sql_session)
+            log_ad.cookies_save(log_ad, sql_session)
 
         # 动作存放
         object_name = ''

+ 8 - 3
wechat_action/login_ad.py

@@ -126,12 +126,17 @@ class LogIn:
             var e_one=document.getElementsByClassName('Table_new__wrapper-1cpZN')[0];
             e_one.scroll(10000,100000);
             ''')
-        WebDriverWait(self.driver, 100).until(
-            lambda driver: len(self.driver.find_elements_by_link_text('广告投放')) == 1)
         time.sleep(0.1)
+        # TODO:有时间去除掉这个time.sleep
+        time.sleep(5)
+        WebDriverWait(self.driver, 100).until(
+            lambda driver: len([self.driver.find_elements_by_link_text('广告投放')]) == 1)
+        WebDriverWait(self.driver, 100).until(
+            lambda driver: len([_ for _ in self.driver.find_elements_by_link_text('广告投放') if
+                                _.is_enabled() and _.is_displayed()]) == 1)
         elements = self.driver.find_elements_by_link_text('广告投放')
         elements[0].click()
-        time.sleep(1)
+        WebDriverWait(self.driver, 100).until(lambda driver: len(self.driver.window_handles) > 1)
         logging.info('切换服务商成功')
         self.cookies_save(self, sql_session)