2026.4.7本地初次跑灵衍 生图代码 若干问题
问题:运行报错原因:没装依赖解决为什么:项目依赖 FastAPI、Celery、Redis 等第三方库,不安装就无法运行。
项目运行问题总结
一、依赖安装
问题:运行 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更多推荐
所有评论(0)