xtn-tools-pro 1.0.0.4.9__tar.gz → 1.0.0.5.1__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. {xtn-tools-pro-1.0.0.4.9/xtn_tools_pro.egg-info → xtn-tools-pro-1.0.0.5.1}/PKG-INFO +1 -1
  2. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/setup.py +1 -1
  3. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/task_pro/go_fun.py +36 -8
  4. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/utils/log.py +5 -5
  5. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1/xtn_tools_pro.egg-info}/PKG-INFO +1 -1
  6. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/LICENSE +0 -0
  7. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/README.md +0 -0
  8. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/setup.cfg +0 -0
  9. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/__init__.py +0 -0
  10. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/db/MongoDB.py +0 -0
  11. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/db/MysqlDB.py +0 -0
  12. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/db/RedisDB.py +0 -0
  13. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/db/__init__.py +0 -0
  14. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/proxy/XiaoXiangProxy.py +0 -0
  15. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/proxy/__init__.py +0 -0
  16. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/proxy/proxy.py +0 -0
  17. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/task_pro/__init__.py +0 -0
  18. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/tools.py +0 -0
  19. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/utils/__init__.py +0 -0
  20. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/utils/crypto.py +0 -0
  21. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/utils/file_utils.py +0 -0
  22. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/utils/helpers.py +0 -0
  23. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/utils/retry.py +0 -0
  24. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/utils/sql.py +0 -0
  25. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro/utils/time_utils.py +0 -0
  26. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro.egg-info/SOURCES.txt +0 -0
  27. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro.egg-info/dependency_links.txt +0 -0
  28. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro.egg-info/requires.txt +0 -0
  29. {xtn-tools-pro-1.0.0.4.9 → xtn-tools-pro-1.0.0.5.1}/xtn_tools_pro.egg-info/top_level.txt +0 -0
@@ -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
@@ -15,7 +15,7 @@ with open("README.md", "r") as f:
15
15
 
16
16
  setuptools.setup(
17
17
  name="xtn-tools-pro", # 模块名称
18
- version="1.0.0.4.9", # 版本
18
+ version="1.0.0.5.1", # 版本
19
19
  author="xtn", # 作者
20
20
  author_email="czw011122@gmail.com", # 作者邮箱
21
21
  description="xtn 开发工具", # 模块简介
@@ -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