Почему так происходит вместе с uwsgi?

Помогите пожалуйста разобраться, первый раз размещаю django приложение, не понимаю что делаю.
Локально с python manage.py runserver всё работает как нужно.
А вот в связке с nginx + uwsgi + django, страница как будто кэшируется.
Т.е. если перейти по ссылке bit.ly/1NpYrmt , нажать "купить", а потом обновлять страницу, в корзине сумма чередуется с предыдущим значением.
Что нужно дописать в конфиг, чтобы избежать такого поведения?

upd: nginx-conf:
upstream roofracks{
server unix:///tmp/roofracks.sock; # for a file socket
#server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}

server {
listen 80;
server_name http://www.xxx.ru;

location / {
proxy_pass http://localhost:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#uwsgi_pass roofracks;
include /etc/uwsgi/uwsgi_params;
}

location /static {
alias /var/www/static;
}

uwsgi.ini


home=/path/project/env
http = :8001
chdir=/path/project/roofracks
master=True
disable-logging=True
vacuum=True
socket = /tmp/%n.sock
#pidfile=/path/project/pids/project.pid
max-requests=5000
#socket=127.0.0.1:49001
processes=2

#module = /path/project/first/uwsgi_params
#pythonpath=/path/project/env
env=DJANGO_SETTINGS_MODULE=roofracks.settings
#module = django.core.handlers.wsgi:WSGIHandler()

module = roofracks.wsgi:application
touch-reload=/tmp/roofracks.txt

  • Вопрос задан
  • 618 просмотров
Решения вопроса 1
Tark
@Tark
Pyramid'альный мир
Александр Александров, обратите внимание, что значения всего два - ровно по количеству воркеров uwsgi.

Если никто не против, расскажу небольшую историю. Когда-то, когда я писал первое приложение на Flask, я решил, что постоянно драть сервер БД ради практически неизменных данных неразумно, и кешировал их локально. Локально, Карл! В переменных. И передавал их в шаблонизатор. А потом я выложил своё творение в сеть и тоже поставил два воркера на uwsgi. И стоило мне добавить раздел меню, как я получал странную ситуацию: на части запросов сайт отображался с созданным меню, а иногда показывалась "старая" версия. Что логично, локально (на дев-сервере) всё работало замечательно.

Roman Kitaev всенепременно прав, в коде ошибка, не в nginx и не в uwsgi.

UPD: дело в том, что воркеры uwsgi запускают изолированные процессы, каждый со своим набором данных, соединением с БД/кешами прочими няшностями. Локально в таком случае ничего нельзя хранить. Если очень хочется, стоит присмотреться к асинхронным фреймворкам с единственным процессом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@deliro
По-умолчанию, ничего не кэшируется. В коде ошибка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы