Flask+Redis任务队列问题:RQ Worker执行前退出报错
问题排查与解决:RQ Worker 报
module os has no attribute 'fork' 错误 核心原因
这个错误本质是RQ Worker 运行在 Windows 原生 Python 环境中,而非 WSL 的 Python 环境。Windows 原生 Python 的os模块没有fork()方法(这是 Unix/Linux 系统专属特性),你虽在 WSL bash 界面操作,但 VS Code 终端可能未正确关联到 WSL 内的 Python 环境,从而触发该异常。
解决步骤
1. 验证终端使用的 Python 环境
在启动 RQ Worker 的 VS Code 终端中执行以下命令,确认路径归属:
which python3
正常输出应为 WSL 内的路径(如/usr/bin/python3),而非 Windows 路径(如/mnt/c/Users/xxx/AppData/Local/Programs/Python/Python3x/python.exe)。
2. 切换到 WSL 专属 Python 环境
- 若未安装 VS Code 的 Remote - WSL 扩展,先安装后通过左下角远程连接按钮选择 WSL 重新打开项目;
- 若使用了虚拟环境,在 WSL bash 中手动激活:
source 你的虚拟环境路径/bin/activate
3. 重启 RQ Worker
确认环境正确后,重新启动 Worker:
rq worker microblog-tasks
4. 重新执行任务代码
确保提交任务的 Python Shell 同样使用 WSL 环境,再运行代码:
from redis import Redis import rq queue = rq.Queue('microblog-tasks', connection=Redis.from_url('redis://')) job = queue.enqueue('app.tasks.example', 23) print(job.get_id())
额外检查点
- Redis 服务已正常运行(从你提供的
systemctl status redis输出可确认),默认连接地址redis://与服务地址一致,无需修改; - 确保 Worker 和任务提交使用的是同一虚拟环境,避免依赖版本不一致引发其他问题。
内容的提问来源于stack exchange,提问作者edu
相关产品推荐
相关产品推荐

