Обновление Django до 2.2 LTS - объект не подлежит подписке
Я пытаюсь обновить проект Django с 1.11 LTS до 2.2 LTS.
Другие пакеты, которые я использую:
- Джанго-кеш-машина 1.1.0
- django-bmemcached (обновлено с 0.2.3 до 0.3.0)
- https://github.com/jaysonsantos/python-binary-memcached (обновлено с 0.26.0 до 0.29.0)
Рассмотрим строку ниже, которая работала до тех обновлений, которые я перечислил выше.
CustomUser.cache_objects.get(user=request.user)
Я получаю сообщение об ошибке:
Request Method: GET
Django Version: 2.2
Exception Type: TypeError
Exception Value:
'dict_keys' object is not subscriptable
Exception Location: /app/.heroku/python/lib/python3.8/site-packages/bmemcached/protocol.py in get_multi, line 497
Python Executable: /app/.heroku/python/bin/python
Python Version: 3.8.5
Полная трассировка:
Traceback:
File "/app/.heroku/python/lib/python3.8/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/app/.heroku/python/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/app/.heroku/python/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/app/.heroku/python/lib/python3.8/site-packages/django/views/decorators/csrf.py" in wrapped_view
54. return view_func(*args, **kwargs)
File "/app/.heroku/python/lib/python3.8/site-packages/rest_framework/viewsets.py" in view
114. return self.dispatch(request, *args, **kwargs)
File "/app/.heroku/python/lib/python3.8/site-packages/rest_framework/views.py" in dispatch
505. response = self.handle_exception(exc)
File "/app/.heroku/python/lib/python3.8/site-packages/rest_framework/views.py" in handle_exception
465. self.raise_uncaught_exception(exc)
File "/app/.heroku/python/lib/python3.8/site-packages/rest_framework/views.py" in raise_uncaught_exception
476. raise exc
File "/app/.heroku/python/lib/python3.8/site-packages/rest_framework/views.py" in dispatch
502. response = handler(request, *args, **kwargs)
File "/path-to-file" in list
532. custom_user = CustomUser.cache_objects.get(user=request.user)
File "/app/.heroku/python/lib/python3.8/site-packages/django/db/models/manager.py" in manager_method
82. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/app/.heroku/python/lib/python3.8/site-packages/django/db/models/query.py" in get
402. num = len(clone)
File "/app/.heroku/python/lib/python3.8/site-packages/django/db/models/query.py" in __len__
256. self._fetch_all()
File "/app/.heroku/python/lib/python3.8/site-packages/django/db/models/query.py" in _fetch_all
1242. self._result_cache = list(self._iterable_class(self))
File "/app/.heroku/python/lib/python3.8/site-packages/caching/base.py" in __iter__
144. self.cache_objects(to_cache, query_key)
File "/app/.heroku/python/lib/python3.8/site-packages/caching/base.py" in cache_objects
101. invalidator.cache_objects(self.queryset.model, objects, query_key, query_flush)
File "/app/.heroku/python/lib/python3.8/site-packages/caching/invalidation.py" in cache_objects
121. self.add_to_flush_list(flush_lists)
File "/app/.heroku/python/lib/python3.8/site-packages/caching/invalidation.py" in add_to_flush_list
153. flush_lists.update(cache.get_many(list(mapping.keys())))
File "/app/.heroku/python/lib/python3.8/site-packages/django/core/cache/backends/memcached.py" in get_many
88. ret = self._cache.get_multi(key_map.keys())
File "/app/.heroku/python/lib/python3.8/site-packages/bmemcached/client/replicating.py" in get_multi
82. results = server.get_multi(keys)
File "/app/.heroku/python/lib/python3.8/site-packages/bmemcached/protocol.py" in get_multi
497. keys, last = keys[:-1], str_to_bytes(keys[-1])
Exception Type: TypeError at /endpoint
Exception Value: 'dict_keys' object is not subscriptable
Это происходит только на моем экземпляре Heroku, если я запускаю его локально, он работает должным образом.