Как не дать бэкэнду Django2.2 Cache иметь ключ сельдерея в байтах - PullRequest
0 голосов
/ 15 января 2020

У меня есть эта ошибка из серверной части кэша django после обновления до python3 .6 и django2.2 из python3 .5 и django 1.11 соответственно, где функция django '* validay_key завершается неудачно с помощью TypeError из моего копания я обнаружил, что сбой ключа был в байтах b'celery-task-meta-23d118e8-144c-4178-bf1e-beeb9b04cc7f'.

Кто-нибудь сталкивался с этим? Не уверен, что это проблема с django или сельдереем, как мне решить эту проблему, чтобы все ключи были python3? Вот трассировка

 Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/views/decorators/cache.py", line 31, in _cache_controlled
    response = viewfunc(request, *args, **kw)
  File "/code/frontend/views.py", line 95, in _checklogin
    return view_func(request, *args, **kwargs)
  File "/code/frontend/views.py", line 203, in get_progress
    data['status'] = task.status
  File "/usr/local/lib/python3.6/site-packages/celery/result.py", line 471, in state
    return self._get_task_meta()['status']
  File "/usr/local/lib/python3.6/site-packages/celery/result.py", line 410, in _get_task_meta
    return self._maybe_set_cache(self.backend.get_task_meta(self.id))
  File "/usr/local/lib/python3.6/site-packages/celery/backends/base.py", line 359, in get_task_meta
    meta = self._get_task_meta_for(task_id)
  File "/usr/local/lib/python3.6/site-packages/celery/backends/base.py", line 671, in _get_task_meta_for
    meta = self.get(self.get_key_for_task(task_id))
  File "/usr/local/lib/python3.6/site-packages/django_celery_results/backends/cache.py", line 19, in get
    return self.cache_backend.get(key)
  File "/usr/local/lib/python3.6/site-packages/django/core/cache/backends/db.py", line 52, in get
    return self.get_many([key], version).get(key, default)
  File "/usr/local/lib/python3.6/site-packages/django/core/cache/backends/db.py", line 60, in get_many
    self.validate_key(key)
  File "/usr/local/lib/python3.6/site-packages/django/core/cache/backends/base.py", line 251, in validate_key
    if ord(char) < 33 or ord(char) == 127:
TypeError: ord() expected string of length 1, but int found
...