xtn-tools-pro 1.0.0.4.9__py3-none-any.whl → 1.0.0.5.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,6 +16,7 @@ import threading
16
16
  import multiprocessing
17
17
  import concurrent.futures
18
18
  from multiprocessing import Process
19
+ from xtn_tools_pro.utils.time_utils import get_time_now_timestamp
19
20
 
20
21
 
21
22
  class GoFun:
@@ -78,37 +79,64 @@ class GoFun:
78
79
  upload_queue = multiprocessing.Queue()
79
80
  proxies_dict = manager.dict()
80
81
 
81
- processes_list = []
82
82
  processes_item_info = {
83
83
  "_download_and_upload_task": {
84
84
  "target": self._download_and_upload_task,
85
85
  "name": "_download_and_upload_task",
86
86
  "args": (download_queue, upload_queue, proxies_dict, self.__ini_info, logger),
87
+ "start_time": 0,
87
88
  },
88
89
  "_go_task_fun_task": {
89
90
  "target": self._go_task_fun_task,
90
91
  "name": "_go_task_fun_task",
91
92
  "args": (download_queue, upload_queue, proxies_dict, self.__ini_info, go_task_function, logger),
93
+ "start_time": 0,
94
+ "restart_time": int(restart_time),
92
95
  },
93
96
  }
94
97
 
95
98
  for p_item in processes_item_info.values():
96
99
  task_process = multiprocessing.Process(target=p_item["target"], name=p_item["name"], args=p_item["args"])
97
- processes_list.append(task_process)
100
+ processes_item_info[p_item["name"]]["task_process"] = task_process
101
+ processes_item_info[p_item["name"]]["start_time"] = get_time_now_timestamp(is_time_10=True)
98
102
  task_process.start()
103
+ logger.warning(f"进程已启动,{task_process.is_alive()},{task_process.name},{task_process.pid}")
99
104
 
100
105
  while True:
101
106
  time.sleep(10)
102
- for p in processes_list:
107
+ for p_item_info in processes_item_info.values():
108
+ task_process = p_item_info["task_process"]
109
+ task_process_start_time = p_item_info["start_time"]
110
+ task_process_restart_time = p_item_info.get("restart_time",0)
103
111
  # 检查子进程是否存活
104
- if not p.is_alive():
105
- print(f"{p.is_alive()} {p.name} {p.pid}")
106
- processes_list.remove(p)
107
- p_item = processes_item_info[p.name]
112
+ task_process_pid = task_process.pid
113
+ task_process_name = task_process.name
114
+ task_process_is_alive = task_process.is_alive()
115
+ if not task_process_is_alive:
116
+ logger.critical(f"进程不存在,{task_process_is_alive},{task_process_name},{task_process_pid}")
117
+ p_item = processes_item_info[task_process_name]
108
118
  task_process = multiprocessing.Process(target=p_item["target"], name=p_item["name"],
109
119
  args=p_item["args"])
110
- processes_list.append(task_process)
120
+
121
+ processes_item_info[task_process_name]["task_process"] = task_process
122
+ processes_item_info[task_process_name]["start_time"] = get_time_now_timestamp(is_time_10=True)
111
123
  task_process.start()
124
+ logger.warning(f"进程已重启,{task_process.is_alive()},{task_process.name},{task_process.pid}")
125
+ else:
126
+ if not task_process_restart_time:
127
+ continue
128
+ if task_process_start_time+task_process_restart_time <= get_time_now_timestamp(is_time_10=True):
129
+ logger.critical(f"进程已超过设置时间,正在强制关闭进程,{task_process_restart_time},{task_process_is_alive},{task_process_name},{task_process_pid}")
130
+ task_process.terminate()
131
+ task_process.join() # 等待进程确实结束
132
+ p_item = processes_item_info[task_process_name]
133
+ task_process = multiprocessing.Process(target=p_item["target"], name=p_item["name"],
134
+ args=p_item["args"])
135
+
136
+ processes_item_info[task_process_name]["task_process"] = task_process
137
+ processes_item_info[task_process_name]["start_time"] = get_time_now_timestamp(is_time_10=True)
138
+ task_process.start()
139
+ logger.warning(f"进程已重启,{task_process.is_alive()},{task_process.name},{task_process.pid}")
112
140
 
113
141
  def __get_external_ip(self, logger):
114
142
  """
@@ -224,8 +224,8 @@ if __name__ == '__main__':
224
224
  color=True, mode='a', save_time_log_path='./logs')
225
225
  # import time
226
226
  # while True:
227
- # logger.debug("debug message")
228
- # logger.info("info level message")
229
- # logger.warning("warning level message")
230
- # logger.critical("critical level message 你好")
231
- # time.sleep(1)
227
+ logger.debug("debug message")
228
+ logger.info("info level message")
229
+ logger.warning("warning level message")
230
+ logger.critical("critical level message 你好")
231
+ time.sleep(1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xtn-tools-pro
3
- Version: 1.0.0.4.9
3
+ Version: 1.0.0.5.1
4
4
  Summary: xtn 开发工具
5
5
  Author: xtn
6
6
  Author-email: czw011122@gmail.com
@@ -10,17 +10,17 @@ xtn_tools_pro/proxy/XiaoXiangProxy.py,sha256=45SsMZDc-3Ta4THX38vScjaeRBJSp420AJw
10
10
  xtn_tools_pro/proxy/__init__.py,sha256=WRwh6s2lruMu5buh0ejo9EK54kWT_VQhCsFGNFAmcyo,418
11
11
  xtn_tools_pro/proxy/proxy.py,sha256=No6E1pFY5yx2F4976pXPrLtq-QEVp79KupzcufjSN58,8703
12
12
  xtn_tools_pro/task_pro/__init__.py,sha256=nK3U47hWwE1H875ieEToH9r-jzXHS-PXk8cDstOvRE8,418
13
- xtn_tools_pro/task_pro/go_fun.py,sha256=Kzabuk9T-iwyVqmnc0sHUYRIZEPNfcVn8cjCpYUMpRQ,15188
13
+ xtn_tools_pro/task_pro/go_fun.py,sha256=4iVdUAbAxtUU6WszTY66Y1uxFhap6bPyXnMgOK8MkhQ,17504
14
14
  xtn_tools_pro/utils/__init__.py,sha256=I1_n_NP23F2lBqlF4EOlnOdLYxM8M4pbn63UhJN1hRE,418
15
15
  xtn_tools_pro/utils/crypto.py,sha256=RZ5AET4udlraACWMeNF-17JiZ2R6Ahb47_j4tjkV7LE,3190
16
16
  xtn_tools_pro/utils/file_utils.py,sha256=VfdIxog4s1UW5NpKkCvQsUs9qHjLoNCnstZbnftkT4w,2046
17
17
  xtn_tools_pro/utils/helpers.py,sha256=eHhvhcw_jcUhCA6HwOqpD4XU_V_ZoHDgj3qtLR8yzx8,3812
18
- xtn_tools_pro/utils/log.py,sha256=3zbKpWNEdU9bOzi7E-CUt4M0cTewCAfxjp8WjxCN9-M,10168
18
+ xtn_tools_pro/utils/log.py,sha256=m0WtTWkkwtrki1ftP8vCDR8bMfK2gcfUGx5J2x2IlLQ,10138
19
19
  xtn_tools_pro/utils/retry.py,sha256=0wjHsR5DBBKpv4naMfxiky8kprrZes4WURIfFQ4H708,1657
20
20
  xtn_tools_pro/utils/sql.py,sha256=EAKzbkZP7Q09j15Gm6o0_uq0qgQmcCQT6EAawbpp4v0,6263
21
21
  xtn_tools_pro/utils/time_utils.py,sha256=TUtzG61PeVYXhaQd6pBrXAdlz7tBispNIRQRcGhE2No,4859
22
- xtn_tools_pro-1.0.0.4.9.dist-info/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- xtn_tools_pro-1.0.0.4.9.dist-info/METADATA,sha256=dzLNfQL2uT5-V9_WciAsFQ96eCoPI0bYTmJjm2OpcUA,455
24
- xtn_tools_pro-1.0.0.4.9.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
25
- xtn_tools_pro-1.0.0.4.9.dist-info/top_level.txt,sha256=jyB3FLDEr8zE1U7wHczTgIbvUpALhR-ULF7RVEO7O2U,14
26
- xtn_tools_pro-1.0.0.4.9.dist-info/RECORD,,
22
+ xtn_tools_pro-1.0.0.5.1.dist-info/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ xtn_tools_pro-1.0.0.5.1.dist-info/METADATA,sha256=FjTctYZ-J7_hB-HFIoeknlOdiA-W0QCg_sKZqCRLod8,455
24
+ xtn_tools_pro-1.0.0.5.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
25
+ xtn_tools_pro-1.0.0.5.1.dist-info/top_level.txt,sha256=jyB3FLDEr8zE1U7wHczTgIbvUpALhR-ULF7RVEO7O2U,14
26
+ xtn_tools_pro-1.0.0.5.1.dist-info/RECORD,,