浏览代码

多线程启动historyTask

luojunhui 5 月之前
父节点
当前提交
edb4af64bf
共有 1 个文件被更改,包括 11 次插入7 次删除
  1. 11 7
      historyTask.py

+ 11 - 7
historyTask.py

@@ -6,6 +6,7 @@ import asyncio
 import datetime
 import traceback
 
+import threading
 from concurrent.futures import ThreadPoolExecutor, as_completed
 
 from tasks.history_task import historyContentIdTask
@@ -64,11 +65,11 @@ async def main(publish_flag):
     await history_content_id_task.deal(publish_flag)
 
 
-def run_thread(publish_flag, sleep_seconds):
+def run_thread(publish_flag, sleep_seconds, stop_flag):
     """
     执行进程
     """
-    while True:
+    while not stop_flag.is_set():
         loop = asyncio.new_event_loop()
         asyncio.set_event_loop(loop)
         loop.run_until_complete(main(publish_flag=publish_flag))
@@ -77,23 +78,26 @@ def run_thread(publish_flag, sleep_seconds):
         logging(
             code="history0004",
             info="History task finished",
-            alg="run_thread2"
+            alg="run_thread"
         )
-        print("{}    请求执行完成, 等待{}s".format(now_str, sleep_seconds))
+        print("Task{}--{}    请求执行完成, 等待{}s".format(publish_flag, now_str, sleep_seconds))
         time.sleep(sleep_seconds)
 
 
 if __name__ == '__main__':
     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),
-            executor.submit(run_thread, const.DO_NOT_NEED_PUBLISH, const.DO_NOT_NEED_PUBLISH_WAIT_TIME)
+            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...")
+            print("Stopping all threads...")
+            stop_event.set()