Browse Source

修改线程池逻辑

zhangyong 1 năm trước cách đây
mục cha
commit
d85e08961c
5 tập tin đã thay đổi với 31 bổ sung13 xóa
  1. 9 3
      agc_assign_main.py
  2. 9 3
      agc_bk_main.py
  3. 9 3
      agc_main.py
  4. 2 2
      data_assign_main.py
  5. 2 2
      data_main.py

+ 9 - 3
agc_assign_main.py

@@ -52,13 +52,19 @@ def video_task():
     data = Material.feishu_gs_list()
     # 创建一个线程池
     with concurrent.futures.ThreadPoolExecutor() as executor:
-        futures = [executor.submit(video_start, user_data) for user_data in data]
-        # 等待所有任务执行完成
-        for future in concurrent.futures.as_completed(futures):
+        futures = {executor.submit(video_start, user_data): user_data for user_data in data}
+        # 设置超时时间为20分钟
+        timeout = 25 * 60
+        # 等待所有任务执行完成或超时
+        for future in concurrent.futures.as_completed(futures, timeout=timeout):
             try:
                 # 获取每个任务的执行结果
                 result = future.result()
                 print("处理结果:", result)
+            except concurrent.futures.TimeoutError:
+                # 如果任务超时,则取消任务
+                future.cancel()
+                print("任务超时,已取消.")
             except Exception as e:
                 print("处理任务时出现异常:", e)
     print("执行生成视频脚结束")

+ 9 - 3
agc_bk_main.py

@@ -41,13 +41,19 @@ def video_task():
     data = Material.feishu_bk_list()
     # 创建一个线程池
     with concurrent.futures.ThreadPoolExecutor() as executor:
-        futures = [executor.submit(video_start, user_data) for user_data in data]
-        # 等待所有任务执行完成
-        for future in concurrent.futures.as_completed(futures):
+        futures = {executor.submit(video_start, user_data): user_data for user_data in data}
+        # 设置超时时间为20分钟
+        timeout = 25 * 60
+        # 等待所有任务执行完成或超时
+        for future in concurrent.futures.as_completed(futures, timeout=timeout):
             try:
                 # 获取每个任务的执行结果
                 result = future.result()
                 print("处理结果:", result)
+            except concurrent.futures.TimeoutError:
+                # 如果任务超时,则取消任务
+                future.cancel()
+                print("任务超时,已取消.")
             except Exception as e:
                 print("处理任务时出现异常:", e)
     print("执行生成视频脚结束")

+ 9 - 3
agc_main.py

@@ -39,13 +39,19 @@ def video_task():
     data = Material.feishu_list()
     # 创建一个线程池
     with concurrent.futures.ThreadPoolExecutor() as executor:
-        futures = [executor.submit(video_start, user_data) for user_data in data]
-        # 等待所有任务执行完成
-        for future in concurrent.futures.as_completed(futures):
+        futures = {executor.submit(video_start, user_data): user_data for user_data in data}
+        # 设置超时时间为20分钟
+        timeout = 25 * 60
+        # 等待所有任务执行完成或超时
+        for future in concurrent.futures.as_completed(futures, timeout=timeout):
             try:
                 # 获取每个任务的执行结果
                 result = future.result()
                 print("处理结果:", result)
+            except concurrent.futures.TimeoutError:
+                # 如果任务超时,则取消任务
+                future.cancel()
+                print("任务超时,已取消.")
             except Exception as e:
                 print("处理任务时出现异常:", e)
     print("执行生成视频脚结束")

+ 2 - 2
data_assign_main.py

@@ -45,7 +45,7 @@ def douyin_task():
     # 创建一个线程池
     valid_data = [user_data for user_data in data if user_data['sheet'] is not None]
     with concurrent.futures.ThreadPoolExecutor() as executor:
-        futures = [executor.submit(douyin_start, user_data) for user_data in valid_data]
+        futures = {executor.submit(douyin_start, user_data): user_data for user_data in valid_data}
         # 等待所有任务执行完成
         for future in concurrent.futures.as_completed(futures):
             # 获取每个任务的执行结果
@@ -59,7 +59,7 @@ def kuanshou_task():
     # 创建一个线程池
     valid_data = [user_data for user_data in data if user_data['sheet'] is not None]
     with concurrent.futures.ThreadPoolExecutor() as executor:
-        futures = [executor.submit(kuaishou_start, user_data) for user_data in valid_data]
+        futures = {executor.submit(kuaishou_start, user_data): user_data for user_data in valid_data}
         # 等待所有任务执行完成
         for future in concurrent.futures.as_completed(futures):
             # 获取每个任务的执行结果

+ 2 - 2
data_main.py

@@ -20,7 +20,7 @@ def douyin_task():
     data = Material.get_all_user("douyin")
     # 创建一个线程池
     with concurrent.futures.ThreadPoolExecutor() as executor:
-        futures = [executor.submit(douyin_start, user_data) for user_data in data]
+        futures = {executor.submit(douyin_start, user_data): user_data for user_data in data}
         # 等待所有任务执行完成
         for future in concurrent.futures.as_completed(futures):
             # 获取每个任务的执行结果
@@ -34,7 +34,7 @@ def kuanshou_task():
     data = Material.get_all_user("kuaishou")
     # 创建一个线程池
     with concurrent.futures.ThreadPoolExecutor() as executor:
-        futures = [executor.submit(kuaishou_start, user_data) for user_data in data]
+        futures = {executor.submit(kuaishou_start, user_data): user_data for user_data in data}
         # 等待所有任务执行完成
         for future in concurrent.futures.as_completed(futures):
             # 获取每个任务的执行结果