Django压缩错误:类型为“ CacheKey”的无效输入

时间:2018-11-16 04:21:16

标签: python django ansible django-compressor

在生产服务器上压缩Django静态文件时,我们突然开始遇到此问题。 Ubuntu 16.04,Python 3.x,Django 1.11。我正在使用ansible-playbook进行部署。

错误如下:

CommandError: An error occurred during rendering /chalktalk/app/chalktalk-react-40/chalktalk-react-40/chalktalk/apps/exams/templates/exams/section-edit.html: Invalid input of type: 'CacheKey'. Convert to a byte, string or number first.

这似乎不是一个静态文件中的问题,而是一个普遍的问题。每次运行它,我们都会得到一个不同的文件。

我一直在寻找google的任何线索,但没有出现相同的错误。

2 个答案:

答案 0 :(得分:13)

这似乎与基础redis库有关。从2017年8月17日起,尝试将redis版本固定到2.10.6。11月15日发布的新版本3具有此不兼容的更改。

pip install redis==2.10.6
# and/or
echo redis==2.10.6 >> requirements.txt

我不确定您使用的是哪个软件包可能需要redis作为依赖项,或者您是否正在使用它。无论哪种情况,其过程都是相同的。

我也刚开始遇到此问题,但是通过django-redis软件包,它需要基础redis库。但是,该软件包实际上并没有限制 maximum 版本,因此它可以愉快地升级到主要版本后,您实际上不能这样做,因为那是您希望API发生变化的地方!

确切的代码,在django-redis的母版中:

install_requires = [
    "redis>=2.10.0",
]

但这应该是这个

install_requires = [
    "redis>=2.10.0, <3",
]

编辑:我刚刚找到了bug report in django-redis (#342) about this,但是当我调查这个问题时,它首先出现在Google上。

答案 1 :(得分:0)

尝试在版本3以下安装redis-py