1. API 密钥安全存储 (crypto.py)
改进前:
密钥直接存储在 .env 文件中,安全性较低,容易泄露。
# 改进前
if ENCRYPTION_KEY is None:
ENCRYPTION_KEY = Fernet.generate_key()
with open(".env", "a") as f:
f.write(f"\nENCRYPTION_KEY={ENCRYPTION_KEY.decode()}\n")
改进后:
密钥从环境变量中读取,避免了将敏感信息存储在代码或配置文件中。
# 改进后
ENCRYPTION_KEY = os.getenv("ENCRYPTION_KEY")
if ENCRYPTION_KEY is None:
raise ValueError("ENCRYPTION_KEY environment variable is not set.")
改进带来的好处:
- 提高了安全性,降低了密钥泄露的风险。
- 符合安全最佳实践,避免将敏感信息硬编码在代码中。
2. 进程监控功能增强 (process_monitor.py)
改进前:
监控频率固定为 1 秒,无法自定义;缺少资源使用阈值告警。
# 改进前
time.sleep(1)
改进后:
- 监控频率可通过 config.py 中的
MONITORING_INTERVAL
配置。 - 添加了 CPU 和内存使用率阈值,并在超过阈值时记录警告日志。
# 改进后
time.sleep(settings.MONITORING_INTERVAL)
# ...
if cpu_percent > settings.CPU_THRESHOLD:
logging.warning(f"{self.process_name} CPU usage exceeds threshold: {cpu_percent}%")
if memory_percent > settings.MEMORY_THRESHOLD:
logging.warning(f"{self.process_name} Memory usage exceeds threshold: {memory_percent}%")
改进带来的好处:
- 更加灵活,可以根据实际需求调整监控频率。
- 提供了资源使用阈值告警,及时提醒用户关注潜在的性能问题。
3. 配置项增强 (config.py)
改进前:
只有基本的服务器配置项。
改进后:
添加了监控频率、CPU 阈值和内存阈值的配置项。
# 改进后
class Settings(BaseSettings):
# ...
MONITORING_INTERVAL: int = int(os.getenv("MONITORING_INTERVAL", 5))
CPU_THRESHOLD: int = int(os.getenv("CPU_THRESHOLD", 80))
MEMORY_THRESHOLD: int = int(os.getenv("MEMORY_THRESHOLD", 80))
改进带来的好处:
- 提高了可配置性,方便用户根据实际需求调整应用程序行为。
4. 优雅地关闭程序 (run.py)
改进前:
直接结束进程,可能导致数据丢失或其他问题。
改进后:
使用 signal 模块处理 SIGINT 和 SIGTERM 信号,允许程序在关闭前执行必要的清理操作。
# 改进后
def signal_handler(sig, frame):
logging.info("Stopping SwiftAPI-Connect...")
# 在这里添加关闭资源的操作,例如关闭数据库连接等
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
# ...
改进带来的好处:
- 提高了程序的可靠性和稳定性,避免了意外关闭导致的数据丢失或其他问题。
5. 自定义异常和日志记录 (encoding_helper.py 和 http_errors.py)
改进前:
只使用通用异常类型,错误信息不够详细。
改进后:
- 定义了自定义异常
DecodingError
和HTTPError
,用于更清晰地表示特定类型的错误。 - 添加了更详细的日志记录,包括尝试过的编码、请求方法、URL 和错误信息等,方便排查问题。
# encoding_helper.py
class DecodingError(Exception):
# ...
# http_errors.py
class HTTPError(Exception):
# ...
async def http_exception_handler(request: Request, exc: Union[HTTPException, HTTPError]):
"""全局 HTTP 异常处理"""
logging.error(f"Request: {request.method} {request.url} - Error: {exc}")
# ...
改进带来的好处:
- 提高了代码的可读性和可维护性。
- 方便排查问题,更快地定位和解决错误。
其他文件
progress_bar.py:
- 添加了回调函数,可以根据实际操作进度更新进度条。
request_form.py:
- 功能基本保持不变,但建议添加参数类型校验、默认值和删除参数的功能,提高易用性。