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