Skip to content

V1.3

Latest
Compare
Choose a tag to compare
@riceshowerX riceshowerX released this 06 Jun 09:08
· 36 commits to main since this release
2127f02

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)

改进前:
只使用通用异常类型,错误信息不够详细。

改进后:

  • 定义了自定义异常 DecodingErrorHTTPError,用于更清晰地表示特定类型的错误。
  • 添加了更详细的日志记录,包括尝试过的编码、请求方法、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:

  • 功能基本保持不变,但建议添加参数类型校验、默认值和删除参数的功能,提高易用性。