From bb3bd2596d11f3f9f1b3e526ddf793c86e731f2c Mon Sep 17 00:00:00 2001 From: cnlimiter Date: Thu, 26 Mar 2026 00:23:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(register):=20=E6=B7=BB=E5=8A=A0=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E6=B8=85=E7=90=86=E5=8A=9F=E8=83=BD=E5=B9=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 Register 类中实现 close 方法用于关闭会话、HTTP 客户端和邮箱服务 - 添加 httpx>=0.28.1 到项目依赖列表 - 实现异常处理确保资源释放过程的稳定性 - 为会话管理和 HTTP 客户端添加适当的关闭逻辑 --- pyproject.toml | 1 + src/core/register.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index af07d21..54390bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,7 @@ dependencies = [ "psycopg[binary]>=3.1.18", "websockets>=16.0", "path>=17.1.1", + "httpx>=0.28.1", ] [project.optional-dependencies] diff --git a/src/core/register.py b/src/core/register.py index 4082e83..d3cdf75 100644 --- a/src/core/register.py +++ b/src/core/register.py @@ -358,6 +358,28 @@ class RegistrationEngine: self._log(f"初始化会话失败: {e}", "error") return False + def close(self): + """关闭注册流程占用的资源""" + if self.session: + try: + self.session.close() + except Exception as e: + self._log(f"关闭注册会话失败: {e}", "warning") + finally: + self.session = None + + try: + self.http_client.close() + except Exception as e: + self._log(f"关闭 HTTP 客户端失败: {e}", "warning") + + close_email_service = getattr(self.email_service, "close", None) + if callable(close_email_service): + try: + close_email_service() + except Exception as e: + self._log(f"关闭邮箱服务失败: {e}", "warning") + def _get_device_id(self) -> Optional[str]: """获取 Device ID""" if not self.oauth_start: