xtn-tools-pro 1.0.0.4.9__py3-none-any.whl → 1.0.0.5.1__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- xtn_tools_pro/task_pro/go_fun.py +36 -8
- xtn_tools_pro/utils/log.py +5 -5
- {xtn_tools_pro-1.0.0.4.9.dist-info → xtn_tools_pro-1.0.0.5.1.dist-info}/METADATA +1 -1
- {xtn_tools_pro-1.0.0.4.9.dist-info → xtn_tools_pro-1.0.0.5.1.dist-info}/RECORD +7 -7
- {xtn_tools_pro-1.0.0.4.9.dist-info → xtn_tools_pro-1.0.0.5.1.dist-info}/LICENSE +0 -0
- {xtn_tools_pro-1.0.0.4.9.dist-info → xtn_tools_pro-1.0.0.5.1.dist-info}/WHEEL +0 -0
- {xtn_tools_pro-1.0.0.4.9.dist-info → xtn_tools_pro-1.0.0.5.1.dist-info}/top_level.txt +0 -0
xtn_tools_pro/task_pro/go_fun.py
CHANGED
@@ -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
|
-
|
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
|
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
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
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
|
-
|
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
|
"""
|
xtn_tools_pro/utils/log.py
CHANGED
@@ -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
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
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)
|
@@ -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=
|
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=
|
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.
|
23
|
-
xtn_tools_pro-1.0.0.
|
24
|
-
xtn_tools_pro-1.0.0.
|
25
|
-
xtn_tools_pro-1.0.0.
|
26
|
-
xtn_tools_pro-1.0.0.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|