| 
					
				 | 
			
			
				@@ -6,13 +6,17 @@ import asyncio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import datetime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import traceback 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import threading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from concurrent.futures import ThreadPoolExecutor, as_completed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from tasks.history_task import historyContentIdTask 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from applications.db import AsyncMySQLClient 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from applications.log import logging 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from applications.feishu import bot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from applications.config.const import HistoryContentIdTaskConst 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-async def main(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def do_job(publish_flag): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     main job 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     :return: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -45,7 +49,7 @@ async def main(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        history_content_id_task = historyContentIdTask(async_mysql_pool) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        history_content_id_task = historyContentIdTask(async_mysql_pool, publish_flag) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             code="history0003", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,13 +65,45 @@ async def main(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     await history_content_id_task.deal() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if __name__ == '__main__': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    while True: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        asyncio.run(main()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def run_thread(publish_flag, sleep_seconds, stop_flag): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    执行进程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    while not stop_flag.is_set(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loop = asyncio.new_event_loop() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        asyncio.set_event_loop(loop) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loop.run_until_complete(do_job(publish_flag=publish_flag)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loop.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         now_str = datetime.datetime.now().__str__() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        print("{}    请求执行完成, 等待60s".format(now_str)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         logging( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             code="history0004", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            info="History task finished" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            info="History task finished", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            function="run_thread" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        time.sleep(60) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print("Task{}--{}    请求执行完成, 等待{}s".format(publish_flag, now_str, sleep_seconds)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        time.sleep(sleep_seconds) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def main(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    main function 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const = HistoryContentIdTaskConst() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stop_event = threading.Event() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 启动两个线程,分别执行两个函数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    with ThreadPoolExecutor(max_workers=2) as executor: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        futures = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            executor.submit(run_thread, const.NEED_PUBLISH, const.NEED_PUBLISH_WAIT_TIME, stop_event), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            executor.submit(run_thread, const.DO_NOT_NEED_PUBLISH, const.DO_NOT_NEED_PUBLISH_WAIT_TIME, stop_event) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for future in as_completed(futures): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                future.result() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        except KeyboardInterrupt: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            print("Stopping all threads...") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            stop_event.set() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if __name__ == '__main__': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    main() 
			 |