实现下单任务网关与本地 worker
按 docs/order-gateway.md 落地:第三个部署单元 app.gateway(:31109)承担任务队列 + 状态镜像;本地 worker 在 app.trading.worker 内,按 RAKUTEN_ORDER_GATEWAY_URL 决定是否启动。规格 §5 最关键约束已守:租约过期绝不自动重投,恢复只能 reclaim, worker 收到 lease_count>1 时先核对站点订单。 站点交互(加购/下单/付款/订单列表反查)按规格 §10 留接口缝,site_interact.py 全部 NotImplementedError,verify.py 恒返回 unknown——等真实账号实测后再填, 不写猜测的提交逻辑。 310 个测试全绿,覆盖规格 §9 验收清单 12 条;架构测试守住三方互不 import。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+9
-4
@@ -118,16 +118,21 @@ USER rakuten
|
||||
RUN /app/.venv/bin/playwright install chromium
|
||||
|
||||
# 健康检查走应用自带的 /health(轻量、不会触发真实抓取)。
|
||||
# 端口取 RAKUTEN_HEALTH_PORT,未设时用抓取服务的端口——交易容器启动时把它
|
||||
# 设成 31108 即可,两个服务共用这一个镜像。
|
||||
# 端口取 RAKUTEN_HEALTH_PORT,未设时用抓取服务的端口——交易/网关容器启动时把它
|
||||
# 设成对应端口即可,三个服务共用这一个镜像。
|
||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
|
||||
CMD curl -fsS http://127.0.0.1:${RAKUTEN_HEALTH_PORT:-${RAKUTEN_APP_PORT}}/health || exit 1
|
||||
|
||||
# 31107 抓取服务,31108 交易服务(同一镜像,用 command 区分跑哪个)
|
||||
EXPOSE 31107 31108
|
||||
# 31107 抓取服务,31108 交易服务,31109 下单任务网关(同一镜像,用 command 区分跑哪个)
|
||||
EXPOSE 31107 31108 31109
|
||||
|
||||
# 默认起抓取服务。交易服务覆盖 command 即可:
|
||||
# docker run -e RAKUTEN_HEALTH_PORT=31108 -v ./.auth:/app/.auth \
|
||||
# <image> python -m app.trading.main
|
||||
# 注意交易服务持有登录态与订单监控,**只能起一个实例**,不要挂多副本。
|
||||
#
|
||||
# 网关部署在服务器侧(与抓取服务同机或邻近),任务队列 SQLite 需要持久化卷:
|
||||
# docker run -e RAKUTEN_HEALTH_PORT=31109 -v ./data:/app/data \
|
||||
# <image> python -m app.gateway.main
|
||||
# 网关也**只能起一个实例**:SQLite 单连接 + 全局并发度 1,多实例会抢同一个 DB。
|
||||
CMD ["python", "-m", "app.scraping.main"]
|
||||
Reference in New Issue
Block a user