新增内存监控
This commit is contained in:
31
Tools.py
31
Tools.py
@@ -3,9 +3,11 @@ from PIL import Image
|
||||
import requests
|
||||
from requests.adapters import HTTPAdapter
|
||||
from urllib3.util.retry import Retry
|
||||
import psutil, time, threading
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read('config.cfg')
|
||||
myretry = int(config['download']['retry'])
|
||||
logging.basicConfig(level=int(config['logging']['level']), format='%(asctime)s - %(levelname)s - %(message)s')
|
||||
# logging.debug("这是调试信息")
|
||||
# logging.info("这是信息级别的日志")
|
||||
@@ -119,7 +121,7 @@ def download_image(_qqnumber):
|
||||
# 创建一个会进行重试的适配器
|
||||
session = requests.Session()
|
||||
retry = Retry(
|
||||
total=255, # 最多重试255次
|
||||
total=myretry, # 最多重试255次
|
||||
backoff_factor=1, # 每次重试的等待时间增加
|
||||
status_forcelist=[500, 502, 503, 504], # 针对这些HTTP状态码才重试
|
||||
)
|
||||
@@ -169,4 +171,29 @@ def clean_image():
|
||||
os.remove(file_path)
|
||||
logging.debug(f"已删除文件: {file_path}")
|
||||
except Exception as e:
|
||||
logging.debug(f"删除文件 {file_path} 时发生错误: {e}")
|
||||
logging.debug(f"删除文件 {file_path} 时发生错误: {e}")
|
||||
|
||||
def enforce_memory_limit(limit_mb):
|
||||
"""
|
||||
限制当前进程的内存使用。
|
||||
|
||||
:param limit_mb: 内存限制,单位是 MB。
|
||||
"""
|
||||
process = psutil.Process(os.getpid()) # 获取当前进程
|
||||
limit_bytes = limit_mb * 1024 * 1024 # 转换为字节
|
||||
|
||||
while True:
|
||||
memory_usage = process.memory_info().rss # 当前内存使用量(常驻内存)
|
||||
if memory_usage > limit_bytes:
|
||||
print(f"内存使用超过限制!当前使用:{memory_usage / (1024 * 1024):.2f} MB,限制:{limit_mb} MB")
|
||||
os._exit(1) # 强制退出进程
|
||||
time.sleep(1) # 每秒检查一次
|
||||
|
||||
def start_memory_monitor(limit_mb):
|
||||
"""
|
||||
启动内存限制监控线程。
|
||||
|
||||
:param limit_mb: 内存限制,单位是 MB。
|
||||
"""
|
||||
monitor_thread = threading.Thread(target=enforce_memory_limit, args=(limit_mb,), daemon=True)
|
||||
monitor_thread.start()
|
||||
Reference in New Issue
Block a user