RQ-python Redis队列任务入队后未执行问题求助
RQ-Python 任务生成ID但未执行,Worker报模块导入错误的解决方法
问题详情
- 场景:在外部文件定义
createAndSaveIndex函数,导入主文件后加入Redis队列,能成功生成Job ID,但函数始终未执行,job.is_finished持续返回False - 环境:MacOS系统,Homebrew安装Redis,
redis-server已启动,终端操作Redis正常 - 尝试过的排查:测试网上示例、调整函数位置,问题均未解决
Worker报错信息
File "/Users/-/micromamba/envs/flask/lib/python3.11/site-packages/rq/utils.py", line 107, in import_attribute return __builtins__[name] ~~~~~~~~~~~~^^^^^^ KeyError: 'backend_index.createAndSaveIndex'
以及:
File "/Users/-/micromamba/envs/flask/lib/python3.11/site-packages/rq/utils.py", line 109, in import_attribute raise ValueError('Invalid attribute name: %s' % name) ValueError: Invalid attribute name: backend_index.createAndSaveIndex
(backend_index为函数所在的原文件名)
调整模块结构后的情况
改为如下包结构后问题依旧:
project/ ├── main.py └── indexCreation/ ├── __init__.py └── createIndex.py (原名为backend_index)
__init__.py内容:
from .createIndex import createAndSaveIndex
解决方案
- 统一使用VSCode集成终端启动
redis-server、rq worker以及运行主程序,任务可正常执行 - 核心原因:启动
rq worker时,必须保证工作目录与导入模块所在的项目根目录一致,否则Worker无法正确定位并导入任务函数
内容的提问来源于stack exchange,提问作者sc0urge
相关产品推荐
相关产品推荐

