web-dev-qa-db-ja.com

Django圧縮エラー:タイプの無効な入力: 'CacheKey'

Djangoプロダクションサーバーの静的ファイルを圧縮すると、突然この問題が発生しました。Ubuntu16.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.

静的ファイルの1つでは問題ではないようですが、一般的な問題です。実行するたびに、異なるファイルを取得します。

私はグーグルで任意の手がかりを探していましたが、同じエラーで何も表示されません。

10
nael

これは、基盤となる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を必要とする可能性のある使用中のパッケージ、または自分で使用しているかどうかはわかりません。どちらの場合も同じプロセスです。

私もこの問題を抱え始めましたが、redis libが必要なDjango-redisパッケージを使用しました。ただし、そのパッケージは実際にはmaximumバージョンを制限しないため、メジャーバージョンのバンプを超えて幸いにもアップグレードされます。 APIの変更が予想される場所!

Django-redis のマスターの正確なコード:

install_requires = [
    "redis>=2.10.0",
]

しかし、それは本当にこれでなければなりません

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

編集: これに関するDjango-redis(#342)のバグレポート が見つかりましたが、これはSO質問がGoogleで最初に出てきましたそれ。

14
Andrew Backer

バージョン3の下にredis-pyをインストールしてみてください