From 00ab9f48fcc295fdb31decdf425d0fc59da99705 Mon Sep 17 00:00:00 2001 From: danial Date: Fri, 19 Sep 2025 19:11:39 +0800 Subject: [PATCH] =?UTF-8?q?refactor(data):=20=E9=87=8D=E6=9E=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 screenshot 相关代码和配置 - 修改 SNAPSHOT_DIR 路径为复数形式 - 更新 Dockerfile 和 docker-compose 文件中的数据目录结构 - 优化 playwright_service 中的等待逻辑 - 修改异常日志输出,使用 traceback 提供更详细的信息 --- .drone.yml | 2 +- backend/.env.example | 2 +- backend/Dockerfile | 2 +- backend/Dockerfile.worker | 2 +- backend/app/services/playwright_service.py | 12 +++++++++--- deploy/docker-compose.production.yml | 2 -- deploy/docker-compose.swarm.yml | 2 -- deploy/docker-compose.yml | 2 -- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.drone.yml b/.drone.yml index 4c36718..0b08b45 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,7 +15,7 @@ clone: steps: - name: create data directories commands: - - mkdir -p /data/apple_exchange/redis_data /data/apple_exchange/postgres_data /data/apple_exchange/logs /data/apple_exchange/data /data/apple_exchange/screenshots /data/apple_exchange/shared /data/apple_exchange/playwright_browsers + - mkdir -p /data/apple_exchange/redis_data /data/apple_exchange/postgres_data /data/apple_exchange/logs /data/apple_exchange/data /data/apple_exchange/playwright_browsers - name: deploy to production server commands: diff --git a/backend/.env.example b/backend/.env.example index 3b5db86..a643291 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -68,7 +68,7 @@ OTEL_MAX_QUEUE_SIZE=2048 # 文件存储配置 UPLOAD_DIR=./data/uploads -SNAPSHOT_DIR=./data/snapshot +SNAPSHOT_DIR=./data/snapshots HTML_DIR=./data/html MAX_FILE_SIZE=16777216 diff --git a/backend/Dockerfile b/backend/Dockerfile index aca7fb8..468576c 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -30,7 +30,7 @@ RUN apt-get update && apt-get install -y \ RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ dpkg-reconfigure -f noninteractive tzdata -RUN mkdir -p /app/data/snapshot /app/data/html /app/data/uploads /app/data/shared /app/logs +RUN mkdir -p /app/data/uploads /app/logs /app/data/playwright-browsers COPY app ./app COPY run.py ./ diff --git a/backend/Dockerfile.worker b/backend/Dockerfile.worker index 1fe0620..8e09820 100644 --- a/backend/Dockerfile.worker +++ b/backend/Dockerfile.worker @@ -33,7 +33,7 @@ COPY --chmod=755 docker-entrypoint.sh ./ RUN uv sync --frozen && \ chmod -R 755 /app/.venv/bin/* -RUN mkdir -p /app/data/snapshot /app/data/html /app/data/uploads /app/data/shared /app/logs /app/data/playwright-browsers +RUN mkdir -p /app/data/uploads /app/logs /app/data/playwright-browsers COPY app ./app COPY scripts ./scripts diff --git a/backend/app/services/playwright_service.py b/backend/app/services/playwright_service.py index 3099199..6850d01 100644 --- a/backend/app/services/playwright_service.py +++ b/backend/app/services/playwright_service.py @@ -678,7 +678,7 @@ class AppleOrderProcessor: wait_stable=True, ): raise Exception("无法点击 continue_to_review") - await page.wait_for_timeout(2000) + await page.wait_for_load_state("networkidle") logger.info(f"{self.thread_prefix} 已处理配送信息") return True except Exception as e: @@ -707,10 +707,16 @@ class AppleOrderProcessor: ): raise Exception("无法点击 place_order") await page.wait_for_timeout(timeout=5000) + await page.wait_for_load_state("networkidle") # 强制等待 max_wait_timeout = 60 while max_wait_timeout >= 0: - if "You’re all set." in await page.content(): + try: + content = await page.content() + except Exception: + continue + + if "You’re all set." in content: logger.info(f"{self.thread_prefix} 订单提交成功") break logger.info( @@ -739,7 +745,7 @@ class AppleOrderProcessor: return True except Exception as e: - logger.error(f"{self.thread_prefix} 订单完成失败: {e}") + logger.error(f"{self.thread_prefix} 订单完成失败: {traceback.format_exc()}") raise e async def _extract_order_info(self, page: Page) -> dict[str, Any]: diff --git a/deploy/docker-compose.production.yml b/deploy/docker-compose.production.yml index 30734d4..09f467e 100644 --- a/deploy/docker-compose.production.yml +++ b/deploy/docker-compose.production.yml @@ -36,7 +36,6 @@ services: - DATABASE_URL=postgresql+asyncpg://postgres:Kp9mX8vL2nQ5wR7@db:5432/apple_exchange - REDIS_URL=redis://:Df4jG7zN9pL1tY3@redis:6379/0 - WORKERS=4 - - SCREENSHOT_DIR=/app/data/snapshot - LOG_DIR=/app/logs volumes: - logs:/app/logs @@ -65,7 +64,6 @@ services: - DATABASE_URL=postgresql+asyncpg://postgres:Kp9mX8vL2nQ5wR7@db:5432/apple_exchange - REDIS_URL=redis://:Df4jG7zN9pL1tY3@redis:6379/0 - WORKER_MAX_CONCURRENT_TASKS=5 - - SCREENSHOT_DIR=/app/data/snapshot - LOG_DIR=/app/logs - PLAYWRIGHT_BROWSERS_PATH=/app/data/playwright-browsers volumes: diff --git a/deploy/docker-compose.swarm.yml b/deploy/docker-compose.swarm.yml index 3e29d15..386a7fa 100644 --- a/deploy/docker-compose.swarm.yml +++ b/deploy/docker-compose.swarm.yml @@ -58,7 +58,6 @@ services: - REDIS_URL=redis://redis:6379/0 - WORKERS=4 - - SCREENSHOT_DIR=/app/data/snapshot - LOG_DIR=/app/logs volumes: - logs:/app/logs @@ -110,7 +109,6 @@ services: - DATABASE_URL=postgresql+asyncpg://postgres:${POSTGRES_PASSWORD}@db:5432/apple_exchange - REDIS_URL=redis://redis:6379/0 - WORKER_MAX_CONCURRENT_TASKS=2 - - SCREENSHOT_DIR=/app/data/snapshot - LOG_DIR=/app/logs - PLAYWRIGHT_BROWSERS_PATH=/app/data/playwright-browsers volumes: diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 29a7bd2..8e69db8 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -37,7 +37,6 @@ services: - REDIS_URL=redis://redis:6379/0 - WORKERS=4 - - SCREENSHOT_DIR=/app/data/snapshot - LOG_DIR=/app/logs volumes: - logs:/app/logs @@ -66,7 +65,6 @@ services: - DATABASE_URL=postgresql+asyncpg://postgres:password@db:5432/apple_exchange - REDIS_URL=redis://redis:6379/0 - WORKER_MAX_CONCURRENT_TASKS=2 - - SCREENSHOT_DIR=/app/data/snapshot - LOG_DIR=/app/logs - PLAYWRIGHT_BROWSERS_PATH=/app/data/playwright-browsers volumes: