新增内存监控

This commit is contained in:
Qiea
2025-01-28 19:03:58 +08:00
parent 9e4fae1faa
commit 9153f2210b
4 changed files with 44 additions and 6 deletions

View File

@@ -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()