Uwsgi + django: неподдерживаемый тип хэша

Когда я развертываю свой сайт django на сервере Ubuntu 18.04, я обнаружил, что использование python manage.py runserver работает хорошо, но когда я использую uwsgi для запуска этого сайта django, ошибка unsupported hash type продолжает возникать при отправке моей формы входа.

Среда: Ubuntu 18.04 / anaconda3 (используйте conda для управления virtualenvs) /python3.6/uwsgi2.0.17/django2.0/

деталь ошибки: отсюда и возникло исключение: user = authenticate(username=username, password=password)

Тип исключения: ValueError Значение исключения:
неподдерживаемый тип хэша

мой ini файл uwsgi:

[uwsgi]
chdir = /www/wwwroot/django-xxx/
plungins = python,gevent
socket = 127.0.0.1:8080
module = apps.wsgi:application
gevent-early-monkey-patch = True
gevent-wait-for-hub = True
gevent = 10
workers = 3
master = True
vacuum = True
user = root
logto = /www/wwwroot/django-xxx/uwsgi.log

Выслеживать:

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "./apps/sspanel/views.py" in user_login
  94.             user = authenticate(username=username, password=password)

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/contrib/auth/__init__.py" in authenticate
  70.             user = _authenticate_with_backend(backend, backend_path, request, credentials)

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/contrib/auth/__init__.py" in _authenticate_with_backend
  115.     return backend.authenticate(*args, **credentials)

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/contrib/auth/backends.py" in authenticate
  22.             if user.check_password(password) and self.user_can_authenticate(user):

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/contrib/auth/base_user.py" in check_password
  111.         return check_password(raw_password, self.password, setter)

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/contrib/auth/hashers.py" in check_password
  50.     is_correct = hasher.verify(password, encoded)

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/contrib/auth/hashers.py" in verify
  256.         encoded_2 = self.encode(password, salt, int(iterations))

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/contrib/auth/hashers.py" in encode
  249.         hash = pbkdf2(password, salt, iterations, digest=self.digest)

File "/anaconda3/envs/django-sspanel-7/lib/python3.7/site-packages/django/utils/crypto.py" in pbkdf2
  85.     return hashlib.pbkdf2_hmac(digest().name, password, salt, iterations, dklen)

обновление: мои дальнейшие исследования 1. перейти на ubuntu 16.04 без каких-либо других изменений, не работает; 2. Измените способ установки uwsgi, проблема решена: исходный способ установки uwsgi заключался в установке gcc 4.7 и использовании его для установки uwsgi (установка не выполняется, если я устанавливаю uwsgi напрямую, потому что версия gcc слишком высока согласно моим результатам в Google). Пробую conda установить uwsgi, наконец эта проблема исчезает.

вы используете супервизор для запуска службы?

Anusha Prasanth 31.10.2018 13:07

Вы уверены, что uwsgi использует ваш virtualenv ???

bruno desthuilliers 31.10.2018 13:46

@brunodesthuilliers Я запускаю source activate virtualenv_name в моем bash, а затем uwsgi -i uwsgi.ini, я думаю, что virtualenv используется таким образом, верно?

lwabish 31.10.2018 13:54

@AnushaPrasanth Я еще не использовал супервизора, но собираюсь, после того, как эта ошибка будет устранена

lwabish 31.10.2018 13:57

@Eubur У меня нет опыта работы с conda / anaconda, но с ванильным Python это должен быть source /path/to/yourvirtualenv/bin/activate. Но, перечитав вашу трассировку, я вижу, что путь к libs начинается с "/ anaconda3 / envs / django-sspanel-7", поэтому я не могу сказать наверняка ... Вы говорите, что он "хорошо работает" с сервером разработки, но пробовали ли вы войти в систему при запуске сервера разработки? Если нет, то, возможно, отсутствует какой-то пакет, иначе я понятия не имею.

bruno desthuilliers 31.10.2018 14:10

@brunodesthuilliers Я пробовал войти в систему с dev-сервером, работает хорошо

lwabish 31.10.2018 14:15

Что ж ... Вы можете проверить, действительно ли вы обращаетесь к одним и тем же библиотекам при использовании сервера разработки (вы можете просто использовать оболочку django и pdb, пройти через метод User.check_password() и попутно проверять файлы модулей).

bruno desthuilliers 31.10.2018 14:23
1
7
180
0

Другие вопросы по теме