启动Django服务器报错:ImportError: cannot import name get_failed_queue
解决ImportError: cannot import name get_failed_queue的问题
你的问题核心是版本兼容性冲突:你当前使用的rq 1.0已经移除了get_failed_queue这个函数,但django-rq-dashboard 0.3.0是一个较旧的版本,它依然依赖这个被废弃的API,所以启动Django时触发了导入错误。
下面给你两种可行的解决方案:
方案1:降级RQ到兼容版本(推荐新手)
这是最省心的解决方式,直接把RQ降级到django-rq-dashboard 0.3.0支持的版本(比如RQ 0.13.x系列)。在你的虚拟环境中执行以下命令:
pip install rq==0.13.1
执行完成后重新启动Django服务器,这个导入错误应该就能消失了。
另外补充个小提醒:你用的是Python 2.7,但django-rq 2.0其实是面向Python 3.6+开发的,后续可能还会出现其他兼容性问题。如果你的项目必须保留Python 2.7,建议同时把django-rq也降级到1.x版本(比如django-rq==1.3.1),这样和RQ 0.13.x的匹配度会更高。
方案2:修改django-rq-dashboard的代码(适合有一定代码基础的用户)
如果你不想降级RQ,可以手动修改第三方库的代码来适配新的RQ API:
- 找到
django_rq_dashboard的视图文件,路径是:/home/m0nte-cr1st0/.virtualenvs/finbee/local/lib/python2.7/site-packages/django_rq_dashboard/views.py - 把顶部的导入语句:
替换成:from rq import Queue, Worker, get_failed_queue, push_connectionfrom rq import Queue, Worker, push_connection from rq.queues import FailedQueue - 找到代码中所有调用
get_failed_queue()的地方,替换为FailedQueue()(如果需要指定连接,加上connection=connection参数即可)。
不过这种方法的缺点是:后续更新django-rq-dashboard时,你的修改会被覆盖,需要重新调整。
内容的提问来源于stack exchange,提问作者user11301070
相关产品推荐
相关产品推荐

