2026.4.7本地初次跑灵衍 生图代码 若干问题
项目运行问题总结
一、依赖安装
问题:运行python start_server.py报错No module named 'uvicorn'
原因:没装依赖
解决:pip install -r requirements.txt
为什么:项目依赖 FastAPI、Celery、Redis 等第三方库,不安装就无法运行
二、.env 配置文件
问题:服务启动时显示"未设置 doubao_API_KEY"
原因:aaa.env文件名不对,代码读取的是.env
解决:ren aaa.env .env
为什么:项目代码里写死了读取.env文件,不是aaa.env
三、Redis 连接
问题:WinError 10061 由于目标计算机积极拒绝
原因:Redis 容器没启动,或端口没映射
解决:Docker 启动 Redis 容器docker run -d -p 6379:6379 redis
为什么:项目用 Redis 存任务状态,不启动就连接不上
四、RabbitMQ 认证
问题:ACCESS_REFUSED - Login was refused
原因:RabbitMQ 里有用户和虚拟主机,但没配置权限
解决:
docker exec -it rabbitmq rabbitmqctl add_user lingyan lingyan123 docker exec -it rabbitmq rabbitmqctl add_vhost lingyan_vhost docker exec -it rabbitmq rabbitmqctl set_permissions -p lingyan_vhost lingyan ".*" ".*" ".*"为什么:代码里配置的是amqp://lingyan:lingyan123@localhost:5672/lingyan_vhost,必须创建对应的用户和虚拟主机并授权
五、Celery Worker 队列监听
问题:任务进入队列了,但 Worker 不处理
原因:Worker 没指定监听哪个队列,而队列名是动态生成的(带server_a后缀)
解决:启动时指定队列celery -A src.celery_app worker --queues=webly_queue_server_a
为什么:get_queue_name()函数会根据SERVER_ID生成完整队列名,Worker 必须监听对应的队列
六、Windows Celery 进程池权限问题
问题:Worker 报PermissionError: [WinError 5] 拒绝访问
原因:Windows 上 billiard 多进程池有权限 bug
解决:用 solo 模式celery -A src.celery_app worker --pool=solo
为什么:solo 模式是单进程,不依赖 billiard 的多进程机制,避免了 Windows 权限问题
完整启动流程
1. Docker 启动 Redis → docker run -d -p 6379:6379 redis 2. Docker 启动 RabbitMQ → docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:management 3. 配置 RabbitMQ 用户/权限 → 三条 rabbitmqctl 命令 4. 启动 API 服务 → python start_server.py 5. 启动 Worker → celery -A src.celery_app worker --pool=solo --queues=webly_queue_server_a