From 19c3dad33872e60bd5e756ab273f5a17aa14448c Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 8 Jun 2025 19:41:46 +0800 Subject: [PATCH] fix --- app/core/config.py | 4 +-- app/helper/memory.py | 63 -------------------------------------------- config/app.env | 24 ++++++----------- 3 files changed, 10 insertions(+), 81 deletions(-) diff --git a/app/core/config.py b/app/core/config.py index 924b9fec..8e4fb91d 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -69,8 +69,8 @@ class ConfigModel(BaseModel): DB_MAX_OVERFLOW: int = 500 # SQLite 的 busy_timeout 参数,默认为 60 秒 DB_TIMEOUT: int = 60 - # SQLite 是否启用 WAL 模式,默认关闭 - DB_WAL_ENABLE: bool = False + # SQLite 是否启用 WAL 模式,默认开启 + DB_WAL_ENABLE: bool = True # 缓存类型,支持 cachetools 和 redis,默认使用 cachetools CACHE_BACKEND_TYPE: str = "cachetools" # 缓存连接字符串,仅外部缓存(如 Redis、Memcached)需要 diff --git a/app/helper/memory.py b/app/helper/memory.py index 19481128..a817d3ea 100644 --- a/app/helper/memory.py +++ b/app/helper/memory.py @@ -324,66 +324,3 @@ class MemoryHelper(metaclass=Singleton): return f"{obj_type_name}(描述生成失败):{e}" except Exception as e: return f"未知对象(描述生成失败):{e}" - - def get_current_memory_info(self) -> dict: - """ - 获取当前内存使用信息 - :return: 内存使用信息字典 - """ - try: - # 获取当前进程内存使用 - current_memory = psutil.Process().memory_info().rss - - # 获取对象统计 - all_objects = muppy.get_objects() - sum1 = summary.summarize(all_objects) - - memory_info = { - "current_memory_mb": round(current_memory / 1024 / 1024, 2), - "object_count": len(all_objects), - "top_objects": [], - "largest_objects": [] - } - - # 解析对象统计信息 - formatted_lines = list(summary.format_(sum1)) - for line in formatted_lines: - parts = line.split('|') - if len(parts) >= 3 and not line.startswith('=') and not line.startswith(' types'): - # 解析格式: "type_name | count | size" - type_name = parts[0].strip() - count_str = parts[1].strip() - size_str = parts[2].strip() - - # 跳过表头和分隔线 - if type_name and count_str.isdigit(): - # 解析大小(可能包含单位) - size_mb = 0 - if 'MB' in size_str: - size_mb = float(size_str.replace('MB', '').strip()) - elif 'KB' in size_str: - size_mb = float(size_str.replace('KB', '').strip()) / 1024 - elif 'B' in size_str: - size_mb = float(size_str.replace('B', '').strip()) / 1024 / 1024 - - memory_info["top_objects"].append({ - "type": type_name, - "count": count_str, - "size_mb": round(size_mb, 2) - }) - - # 只取前10个有效对象 - if len(memory_info["top_objects"]) >= 10: - break - - # 获取最大对象信息 - try: - memory_info["largest_objects"] = self._get_largest_objects(10) - except Exception as e: - logger.warning(f"获取大对象列表失败: {e}") - memory_info["largest_objects"] = [] - - return memory_info - except Exception as e: - logger.error(f"获取内存信息失败: {e}") - return {"error": str(e)} diff --git a/config/app.env b/config/app.env index c57ea4a7..a077c2bd 100644 --- a/config/app.env +++ b/config/app.env @@ -5,18 +5,8 @@ HOST=0.0.0.0 # 【*】超级管理员,设置后一但重启将固化到数据库中,修改将无效(初始化超级管理员密码仅会生成一次,请在日志中查看并自行登录系统修改) SUPERUSER=admin -# 重启自动升级 release/dev/true/false -MOVIEPILOT_AUTO_UPDATE=release -# 自动检查和更新站点资源包(索引、认证等) -AUTO_UPDATE_RESOURCE=true -# 网络代理服务器地址 http(s)://ip:port、socks5://user:pass@host:port、socks5h://user:pass@host:port -PROXY_HOST= -# 媒体识别来源 themoviedb/douban,使用themoviedb时需要确保能正常连接api.themoviedb.org,使用douban时不支持二级分类 -RECOGNIZE_SOURCE=themoviedb -# OCR服务器地址 -OCR_HOST=https://movie-pilot.org -# 搜索多个名称,true/false,为true时搜索时会同时搜索中英文及原始名称,搜索结果会更全面,但会增加搜索时间;为false时其中一个名称搜索到结果或全部名称搜索完毕即停止 -SEARCH_MULTIPLE_NAME=false +# 开发调试模式,仅开发人员使用,打开后将停止后台服务 +DEV=false # 为指定字幕添加.default后缀设置为默认字幕,支持为'zh-cn','zh-tw','eng'添加默认字幕,未定义或设置为None则不添加 DEFAULT_SUB=zh-cn # 数据库连接池的大小,可适当降低如20-50以减少I/O压力 @@ -25,7 +15,9 @@ DB_POOL_SIZE=100 DB_MAX_OVERFLOW=500 # SQLite 的 busy_timeout 参数,可适当增加如180以减少锁定错误 DB_TIMEOUT=60 -# 是否开发调试模式,仅开发人员使用,打开后将停止后台服务 -DEV=false -API_TOKEN='jYImOhUt6p4acOeMpNgDhA' -ANIME_GENREIDS='[16]' +# 是否启用内存监控,开启后将定期生成内存快照文件 +MEMORY_ANALYSIS=false +# 内存快照间隔(分钟) +MEMORY_SNAPSHOT_INTERVAL=5 +# 保留的内存快照文件数量 +MEMORY_SNAPSHOT_KEEP_COUNT=30 \ No newline at end of file