Django アプリを 1.6 から 1.7 にアップグレードしています。アプリはdjango-cacheops
クエリの結果を保存するために使用します。Django 1.7 に切り替えた後、最初のリクエストを除くすべてのリクエストで次のエラーが発生します。
Traceback (most recent call last):
File "/data/virtualenv/default/lib/python2.7/site-packages/django/core/handlers/base.py", line 204, in get_response
response = middleware_method(request, response)
File "/data/virtualenv/default/lib/python2.7/site-packages/tracking/middleware.py", line 131, in process_response
visitor = self._refresh_visitor(user, request, now)
File "/data/virtualenv/default/lib/python2.7/site-packages/tracking/middleware.py", line 60, in _refresh_visitor
visitor = Visitor.objects.get(pk=session_key)
File "/data/virtualenv/default/lib/python2.7/site-packages/cacheops/query.py", line 398, in get
return self.get_queryset().inplace().get(*args, **kwargs)
File "/data/virtualenv/default/lib/python2.7/site-packages/cacheops/query.py", line 295, in get
return qs._no_monkey.get(qs, *args, **kwargs)
File "/data/virtualenv/default/lib/python2.7/site-packages/django/db/models/query.py", line 353, in get
return clone._result_cache[0]
AttributeError: 'list' object has no attribute '_result_cache'
AttributeError
を上げた場合はclone
単一項目のlist ですが、その list となるdjango.db.models.query
属性です_result_cache
。
そのdjango-cacheops
関数を呼び出すメソッドでは、 self
型はCacheQuerySet
.
私の疑いでは、この問題の原因は、django
コードがQuerySet
オブジェクトを期待しており、アヒルCacheQuerySet
が の期待に完全に一致していないことですQuerySet
。
また、何かが正しく構成されていない可能性もあります。関連する設定は次のとおりです。
CACHEOPS_REDIS = {
'host': 'localhost',
'port': 6379,
'db': 10,
'socket_timeout': 3,
}
CACHEOPS = {
'core.vantageuser': {'ops':'count', 'timeout':60*2},
'core.banditarm': {'ops':'all', 'timeout':60*2},
'core.armmembership': {'ops':'all', 'timeout':60*60*2},
}
CACHEOPS_FAKE = False
CACHEOPS_DEGRADE_ON_FAILURE = True
これは、に報告する必要がある実際の問題django-cacheops
ですか? 問題を回避するためのアイデアはありますか (設定以外CACHEOPS_FAKE=True
)?
[編集]:
私の友人は、最小限の repo で問題を再現することができました。django-tracking2
問題はパッケージに起因するようです。
まだ解決策はありませんが、それに取り組んでいます。