Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » nginx + uwsgi + django проблемы в паботе [RSS Feed]

#1 Май 7, 2013 17:44:45

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

nginx + uwsgi + django проблемы в паботе

Добрый день.
Запустил вышеперечисленную связку под ubuntu 12.04. nginx и uwsgi из репозиториев ОС, django в virtualenv. Всё вроде бы работает, но иногда бывают странности. Например:
При входе в админку иногда с первого раза вход не происходит, вместо этого redirect на страницу входа, но при этом кука устанавливается и если ещё раз зайти на страницу то попадаю в админ панель (пароль второй раз не требует). Вторая странность: меняю в админке first_name и last_name у пользователя, нажимаю кнопку сохранить и в общем списке пользователей вижу старое имя, хотя если посмотреть в БД то там имя изменилось. Как будто где то кеширование происходит или где то что то не успевает отработать и берётся старое значение. Пробовал на ubuntu 12.10 и 13.04, поведение аналогичное. При запуске из под apache и mod_wsgi ничего подобного не наблюдаю. Братцы подскажите куда копать, ничего конструктивного в голову не приходит.
Конфигурационные файлы:
uwsgi:

[uwsgi]
socket = 127.0.0.1:3031
virtualenv = /home/mks/projects/python/web/cusystem/ve
chdir = /home/mks/projects/python/web/cusystem
processes = 2
threads = 2
module = cusystem.wsgi:application
gid = mks
uid = mks
nginx:
server {
listen 80;
root /home/mks/projects/python/web/cusystem/server_media;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:3031;
}
location /media {
try_files $uri =404;
}
location /static {
try_files $uri =404;
}
location /media/files {
internal;
}
}



Отредактировано mks (Май 7, 2013 17:45:42)

Офлайн

#2 Май 7, 2013 18:16:55

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

nginx + uwsgi + django проблемы в паботе

> нажимаю кнопку сохранить и в общем списке пользователей вижу старое имя, хотя если посмотреть в БД то там имя изменилось. Как будто где то кеширование происходит или где то что то не успевает отработать и берётся старое значение.

1) проверка кеша: из браузера запрос уходит? на сервере этот запрос отрабатывается?
2) я так понял что после записи в БД сразу формируется ответ для клиента, возможно что сохраненные данные ещё не разместились в таблице (БД какая?) и тут же идет запрос на получение данных например через 2-й коннект, посмотрите что прилетает из базы - если старое значение то нужно при записи ждать завершения операции, в mongodb это параметр w=1 (w>0). Либо учитывать что произошло изменение и формировать страницу с учетом изменений. Так же тут может быть кеш-прослойка между БД и приложением, при этом кеш нужно сбрасывать (точечно).

Офлайн

#3 Май 7, 2013 21:31:24

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

nginx + uwsgi + django проблемы в паботе

o7412369815963, спасибо за отклик.
1) Из браузера уходит post запрос на адрес /admin/auth/user/2/ с правильным новым именем, приходит ответ с редиректом (код 302) и происходит get запрос страницы /admin/auth/user/ где в списке вижу старое имя. В журналах доступа nginx и uwsgi эти запросы есть.
2) БД - mysql. В django кеш отключен. Как посмотреть то что прилетает из БД, django debug toolbar?
Попробовал, пообновлять страницу редактирования пользователя, обнаружил новую странность: несколько раз появлялось то старое то новое имя. При этом uwsgi в журнал писал по очереди:

(HTTP/1.1 200) 6 headers in 307 bytes (1 switches on core 1)
либо:
(HTTP/1.1 200) 6 headers in 307 bytes (1 switches on core 0)
Возможно проблемы связаны с переключением этих самых ядер? Весь код участвующий в эксперименте это код приложения admin и auth из состава django. Вы предлагаете вносить в него изменения?



Офлайн

#4 Май 7, 2013 22:24:09

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

nginx + uwsgi + django проблемы в паботе

> несколько раз появлялось то старое то новое имя.
Это признаки кеширования (точнее баг, который кеширует), осталось выяснить - где.

Есть (грубо говоря) такая цепочка: mysql -> orm -> шаблоны -> django-core -> uwsgi -> ngnix -> browser -> display.
нужно посмотреть что передает одно звену другому, таким образом узнаем кто виноват.

Попробуйте другой браузер или curl - простой способ отсечь 2 звена справа если ошибка повторяется.

Отредактировано o7412369815963 (Май 7, 2013 22:24:47)

Офлайн

#5 Май 7, 2013 22:28:24

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

nginx + uwsgi + django проблемы в паботе

> Как посмотреть то что прилетает из БД… / … Вы предлагаете вносить в него изменения?
Можно попробовать папку джанги локально положить и поправить, или топорно подменить классы.

Офлайн

#6 Май 8, 2013 15:28:14

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

nginx + uwsgi + django проблемы в паботе

Вообщем к сожалению пока нет возможности подробно разбираться что к чему, интуитивно кажется что это uwsgi что то химичит. Пока запустил django как FastCGI процесс, всё работает стабильно. Потом, если разберусь с проблемой расскажу в чём было дело.



Офлайн

  • Начало
  • » Web
  • » nginx + uwsgi + django проблемы в паботе[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version