| 
					
				 | 
			
			
				@@ -19,6 +19,15 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     不存在历史已经发布的文章的匹配流程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TASK_INIT_STATUS = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TASK_KIMI_FINISHED_STATUS = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TASK_SPIDER_FINISHED_STATUS = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TASK_ETL_FINISHED_STATUS = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TASK_PUBLISHED_STATUS = 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TASK_PROCESSING_STATUS = 101 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TASK_FAIL_STATUS = 99 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ARTICLE_TEXT_TABLE_ERROR = 98 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TASK_MAX_PROCESS_TIMES = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def __init__(self, mysql_client): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.mysql_client = mysql_client 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -29,11 +38,6 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.gh_id_dict = json.loads(self.config.get_config_value("testAccountLevel2")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.account_map = json.loads(self.config.get_config_value("accountMap")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.spider_coroutines = self.config.get_config_value("spiderCoroutines") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.default_status = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.task_processing_status = 101 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.task_defeat_status = 99 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.article_text_table_error = 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.max_process_times = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     async def get_tasks(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -42,9 +46,13 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # 获取 content_status 为 处理中 的任务,判断时间, 如果超过 1h 则,则将它改为 0, process_times + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         select_processing_sql = f""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SELECT trace_id, content_status_update_time, process_times 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            FROM {self.article_match_video_table} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            WHERE content_status = {self.task_processing_status} and process_times <= {self.max_process_times};  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SELECT  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                trace_id, content_status_update_time, process_times 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FROM  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {self.article_match_video_table} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            WHERE  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    content_status = {self.TASK_PROCESSING_STATUS}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                and process_times <= {self.TASK_MAX_PROCESS_TIMES};  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         processing_articles = await self.mysql_client.async_select(select_processing_sql) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if processing_articles: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -65,20 +73,30 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # 将  process_times > 3 的任务的状态修改为失败 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         update_status_sql = f""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            UPDATE {self.article_match_video_table} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SET content_status = %s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            WHERE process_times > %s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            UPDATE  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {self.article_match_video_table} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SET  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                content_status = %s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            WHERE  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                process_times > %s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         await self.mysql_client.async_insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             update_status_sql, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            params=(self.task_defeat_status, self.max_process_times) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            params=( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                self.TASK_FAIL_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                self.TASK_MAX_PROCESS_TIMES 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # 获取  process_times <= 3 且  content_status = 0 的任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         select_sql = f""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SELECT trace_id, content_id, flow_pool_level, gh_id, process_times 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            FROM {self.article_match_video_table}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            WHERE content_status = {self.default_status} and process_times <= {self.max_process_times} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            limit {self.spider_coroutines}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SELECT  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                trace_id, content_id, flow_pool_level, gh_id, process_times 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FROM  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {self.article_match_video_table}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            WHERE  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    content_status = {self.TASK_INIT_STATUS}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                and process_times <= {self.TASK_MAX_PROCESS_TIMES} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LIMIT {self.spider_coroutines}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tasks = await self.mysql_client.async_select(select_sql) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if tasks: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -124,7 +142,7 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     SET content_status = %s, content_status_update_time = %s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     WHERE trace_id = %s and content_status = %s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        await self.mysql_client.async_insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        row_counts = await self.mysql_client.async_insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sql=update_sql, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             params=( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new_content_status, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -133,6 +151,7 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ori_content_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return row_counts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     async def roll_back_content_status_when_fails(self, process_times, trace_id): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -152,11 +171,11 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         await self.mysql_client.async_insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sql=update_article_sql, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             params=( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                self.default_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                self.TASK_INIT_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 int(time.time()), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 process_times + 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                self.task_processing_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                self.TASK_PROCESSING_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -175,7 +194,7 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if result: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for item in result: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 content_status = item[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if content_status != self.default_status: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if content_status != self.TASK_INIT_STATUS: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -189,7 +208,8 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sql = f""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 SELECT platform, play_count, like_count, video_oss_path, cover_oss_path, user_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 FROM {self.article_crawler_video_table} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                WHERE content_id = '{content_id}' and download_status = 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                WHERE content_id = '{content_id}' and download_status = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ORDER BY score DESC; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         res_tuple = await self.mysql_client.async_select(sql) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return [ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -201,7 +221,8 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 "cover_oss_path": i[4], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 "uid": i[5] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for i in res_tuple] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for i in res_tuple 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     async def get_kimi_status(self, content_id): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -218,33 +239,32 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             kimi_status = response[0][0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return kimi_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return self.article_text_table_error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return self.ARTICLE_TEXT_TABLE_ERROR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     async def kimi_task(self, params): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         执行 kimi 任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         :return: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        kimi_success_status = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        kimi_fail_status = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        KIMI_SUCCESS_STATUS = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        KIMI_FAIL_STATUS = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         content_id = params['content_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         trace_id = params['trace_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         process_times = params['process_times'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         kimi_status_code = await self.get_kimi_status(content_id=content_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if kimi_status_code == kimi_success_status: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new_content_status=kimi_success_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if kimi_status_code == KIMI_SUCCESS_STATUS: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            affected_rows = await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new_content_status=self.TASK_KIMI_FINISHED_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ori_content_status=self.default_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ori_content_status=self.TASK_INIT_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "kimi_title": kimi_title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "ori_title": article_obj['article_title'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "kimi_summary": content_title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "kimi_keys": kimi_info['content_keys'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if affected_rows == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    code="6000", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    info="多个进程抢占同一个任务的执行状态锁,抢占失败,return" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             get_kimi_sql = f""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             SELECT article_title, kimi_title, kimi_summary, kimi_keys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             FROM {self.article_text_table} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -257,18 +277,24 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 "kimi_summary": kimi_info[0][2], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 "kimi_keys": json.loads(kimi_info[0][3]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        elif kimi_status_code == self.article_text_table_error: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            todo: 文章表和匹配表没有同步更新,暂时不处理此次任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            print("article_text表还没有更新") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif kimi_status_code == self.ARTICLE_TEXT_TABLE_ERROR: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                code="4000", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                info="long_articles_text表中未找到 content_id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             # 开始处理,讲 content_status 从 0  改为  101 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new_content_status=self.task_processing_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            affected_rows = await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new_content_status=self.TASK_PROCESSING_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ori_content_status=self.default_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ori_content_status=self.TASK_INIT_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if affected_rows == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    code="6000", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    info="多个进程抢占同一个任务的执行状态锁,抢占失败,return" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             K = KimiServer() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 select_sql = f""" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -296,12 +322,12 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         WHERE content_id = %s;""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 await self.mysql_client.async_insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sql=update_kimi_sql, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    params=(kimi_title, content_title, content_keys, kimi_success_status, params['content_id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    params=(kimi_title, content_title, content_keys, KIMI_SUCCESS_STATUS, params['content_id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new_content_status=kimi_success_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new_content_status=self.TASK_KIMI_FINISHED_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ori_content_status=self.task_processing_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ori_content_status=self.TASK_PROCESSING_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     "kimi_title": kimi_title, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -319,7 +345,10 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 await self.mysql_client.async_insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sql=update_kimi_sql, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    params=(kimi_fail_status, content_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    params=( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        KIMI_FAIL_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        content_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 # 将状态由 101  回退为  0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 await self.roll_back_content_status_when_fails( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -332,10 +361,8 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         爬虫任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         :return: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        todo: 任务执行之前加一个判断,判断是存在 3 条以上的视频已经被抓取 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        spider_default_status = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        spider_success_status = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SPIDER_INIT_STATUS = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         trace_id = params['trace_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         content_id = params['content_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         process_times = params['process_times'] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -347,18 +374,24 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         counts = count_tuple[0][0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if counts >= 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new_content_status=spider_success_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new_content_status=self.TASK_SPIDER_FINISHED_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ori_content_status=spider_default_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ori_content_status=SPIDER_INIT_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            # 开始处理,将状态由 1 改成  101 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new_content_status=self.task_processing_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ori_content_status=spider_default_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                trace_id=trace_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 开始处理,将状态由 1 改成  101 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        affected_rows = await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            new_content_status=self.TASK_PROCESSING_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ori_content_status=SPIDER_INIT_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            trace_id=trace_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if affected_rows == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                code="6000", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                info="多个进程抢占同一个任务的执行状态锁,抢占失败,return" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             search_videos_count = await search_videos_from_web( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 info={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     "ori_title": kimi_result['ori_title'], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -373,11 +406,11 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 db_client=self.mysql_client 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if search_videos_count >= 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                # 表示爬虫任务执行成功, 将状态从 101  改未 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # 表示爬虫任务执行成功, 将状态从 101  改为 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new_content_status=spider_success_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new_content_status=self.TASK_SPIDER_FINISHED_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ori_content_status=self.task_processing_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ori_content_status=self.TASK_PROCESSING_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -400,38 +433,49 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         :param params: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         :return: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        video_download_success_status = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        video_download_fail_status = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        etl_task_default_status = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        etl_task_success_status = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        VIDEO_DOWNLOAD_SUCCESS_STATUS = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        VIDEO_DOWNLOAD_FAIL_STATUS = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ETL_TASK_INIT_STATUS = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         trace_id = params['trace_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         content_id = params['content_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # 判断是否有三条已经下载完成的视频 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         select_sql = f""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        select count(id)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        from {self.article_crawler_video_table}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        where content_id = '{content_id}' and download_status = {video_download_success_status}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            select count(id)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            from {self.article_crawler_video_table}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            where content_id = '{content_id}' and download_status = {VIDEO_DOWNLOAD_SUCCESS_STATUS}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         video_count_tuple = await self.mysql_client.async_select(select_sql) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         video_count = video_count_tuple[0][0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if video_count > 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ori_content_status=etl_task_default_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if video_count >= 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            affect_rows = await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ori_content_status=ETL_TASK_INIT_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new_content_status=etl_task_success_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new_content_status=self.TASK_ETL_FINISHED_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if affect_rows == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    code="6000", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    info="多个进程抢占同一个任务的执行状态锁,抢占失败,return" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             # 开始处理, 将文章状态修改为处理状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ori_content_status=etl_task_default_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            affected_rows = await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ori_content_status=ETL_TASK_INIT_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new_content_status=self.task_processing_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new_content_status=self.TASK_PROCESSING_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if affected_rows == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    code="6000", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    info="多个进程抢占同一个任务的执行状态锁,抢占失败,return" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             select_sql = f""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 SELECT id, out_video_id, platform, video_title, video_url, cover_url, user_id, trace_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 FROM {self.article_crawler_video_table} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                WHERE content_id = '{content_id}' and download_status != {video_download_success_status} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                WHERE content_id = '{content_id}' and download_status != {VIDEO_DOWNLOAD_SUCCESS_STATUS} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ORDER BY score DESC; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             videos_need_to_download_tuple = await self.mysql_client.async_select(select_sql) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -482,16 +526,16 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         params=( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             oss_video, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             oss_cover, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            video_download_success_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            VIDEO_DOWNLOAD_SUCCESS_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             params['id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     downloaded_count += 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if downloaded_count > 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            ori_content_status=self.task_processing_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ori_content_status=self.TASK_PROCESSING_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            new_content_status=etl_task_success_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            new_content_status=self.TASK_ETL_FINISHED_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         return True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 except Exception as e: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -502,13 +546,13 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     await self.mysql_client.async_insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         sql=update_sql, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        params=(video_download_fail_status, params['id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        params=(VIDEO_DOWNLOAD_FAIL_STATUS, params['id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if downloaded_count >= 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ori_content_status=self.task_processing_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ori_content_status=self.TASK_PROCESSING_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new_content_status=etl_task_success_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new_content_status=self.TASK_ETL_FINISHED_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -525,19 +569,24 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         :param params: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         :return: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        publish_default_status = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        publish_success_status = 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PUBLISH_DEFAULT_STATUS = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         gh_id = params['gh_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         flow_pool_level = params['flow_pool_level'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         content_id = params['content_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         trace_id = params['trace_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         process_times = params['process_times'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # 开始处理,将状态修改为操作状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ori_content_status=publish_default_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        affected_rows = await self.update_content_status( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ori_content_status=PUBLISH_DEFAULT_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            new_content_status=self.task_processing_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            new_content_status=self.TASK_PROCESSING_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if affected_rows == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                code="6000", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                info="多个进程抢占同一个任务的执行状态锁,抢占失败,return" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             download_videos = await self.get_downloaded_videos(content_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             match flow_pool_level: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -585,11 +634,11 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             await self.mysql_client.async_insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sql=update_sql, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 params=( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    publish_success_status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self.TASK_PUBLISHED_STATUS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     json.dumps(L, ensure_ascii=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     process_times + 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    self.task_processing_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self.TASK_PROCESSING_STATUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         except Exception as e: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -606,35 +655,57 @@ class NewContentIdTask(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         :return: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # step1: 执行 kimi 操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # time.sleep(5) # 测试多个进程操作同一个 task 的等待时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         kimi_result = await self.kimi_task(params) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        trace_id = params['trace_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if kimi_result: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             # 等待 kimi 操作执行完成之后,开始执行 spider_task 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             print("kimi success") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                code=3001, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                info="kimi success", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                trace_id=trace_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             spider_flag = await self.spider_task(params=params, kimi_result=kimi_result) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if spider_flag: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 # 等待爬虫执行完成后,开始执行 etl_task 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 print("spider success") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    code=3002, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    info="spider_success", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    trace_id=trace_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 etl_flag = await self.etl_task(params) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if etl_flag: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     # 等待下载上传完成,执行发布任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     print("etl success") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        code="3003", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        info="etl_success", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        trace_id=trace_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         await self.publish_task(params, kimi_result['kimi_title']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            code="3004", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            info="publish_success", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            trace_id=trace_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            code="9001", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            code="6004", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             info="publish 失败--{}".format(e), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             trace_id=params['trace_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        code="8001", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        code="6003", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         info="ETL 处理失败", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         trace_id=params['trace_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    code="7002", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    code="6002", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     info="爬虫处理失败", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     trace_id=params['trace_id'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ) 
			 |