You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python gRPC服务使用watchdog/watchmedo:检测到变更但代码未刷新

Python gRPC应用watchmedo热重载失效排查

正在构建Python gRPC应用,尝试用watchdog及其扩展watchmedo监听代码变更实现热重载。服务器启动后修改文件,Docker日志能看到重启触发,但代码并未刷新——新增断言失败的单元测试后,重新运行测试未出现预期失败。

异常日志

Starting server...
Traceback (most recent call last):
  File "/code/main.py", line 4, in <module>
    serve()
  File "/code/app/server.py", line 20, in serve
    server.wait_for_termination()
  File "/code/.venv/lib/python3.12/site-packages/grpc/_server.py", line 1485, in wait_for_termination
    return _common.wait(
           ^^^^^^^^^^^^^
  File "/code/.venv/lib/python3.12/site-packages/grpc/_common.py", line 156, in wait
    _wait_once(wait_fn, MAXIMUM_WAIT_TIMEOUT, spin_cb)
  File "/code/.venv/lib/python3.12/site-packages/grpc/_common.py", line 116, in _wait_once
    wait_fn(timeout=timeout)
  File "/usr/local/lib/python3.12/threading.py", line 655, in wait
    signaled = self._cond.wait(timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/threading.py", line 359, in wait
    gotit = waiter.acquire(True, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
Starting server...

配置详情

docker-compose.yml

service:
    build: .
    depends_on:
      postgres:
        condition: service_healthy
    command: poetry run watchmedo auto-restart -d "/app" -p '*.py' --recursive -- python main.py
    volumes:
      - .:/app
    ports:
      - '8010:8010'

项目结构

├── app
├── protos
└── main.py

Dockerfile片段

FROM python:3.12.3-slim-bookworm

RUN pip install poetry==1.8.3

WORKDIR /code

COPY ... ./
RUN poetry install ...

COPY app ./app
COPY protos ./protos
COPY main.py ./

依赖版本

[tool.poetry.dependencies]
python = "^3.12"
grpcio = "^1.63.0"
grpcio-tools = "^1.63.0"
watchdog = {extras = ["watchmedo"], version = "^4.0.1"}

恳请有gRPC经验的开发者帮忙排查问题原因。

内容的提问来源于stack exchange,提问作者nnov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:13:13