Django compress error: Invalid input of type: 'CacheKey'

Django compress error: Invalid input of type: 'CacheKey'

我们在生产服务器上压缩 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 的任何线索,但没有出现相同的错误。

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

这是由于 redis 库在 v2 和 v3 之间发生了变化。尝试将您的 redis 版本固定到 2017 年 8 月 17 日的 2.10.6,即更改前的最后一个 redis 版本。

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

我不确定您正在使用哪个包可能需要 redis 作为依赖项,或者您是否自己使用它。在任何一种情况下,它都是相同的过程。

在我的例子中,这通过 django-redis 包显示出来,它需要底层的 redis 包。 Django-redis 不限制 最大 版本,所以它很高兴地升级到一个主要版本的颠簸,你不能真正做到这一点,因为那是你期望 API改!

确切的代码(在我的例子中),在 django-redis:

的 master 中
install_requires = [
    "redis>=2.10.0",
]

不过真的应该是这样

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

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