Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Многопоточная работа с файлама, глобальными переменными, БД и т.п. [RSS Feed]

#1 Авг. 8, 2014 11:09:36

DHT
От:
Зарегистрирован: 2009-09-24
Сообщения: 119
Репутация: +  0  -
Профиль   Отправить e-mail  

Многопоточная работа с файлама, глобальными переменными, БД и т.п.

На сервере стоит связка Apache + Django.
Для Apache выбрана WinNT MPM модель, где ThreadsPerChild 64

Получается, что если идет множетсво одинаковых параллельных запросов и вызывается один и тот же view, в котором идет инкрементация глобальной переменной или запись в файл, то могут возникнуть конфликтные ситуации.

Пробовал внтури view испольщовать threading.Lock, но не помогает.
Как правильно поступать в данной ситуации?



Офлайн

#2 Авг. 10, 2014 12:45:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Многопоточная работа с файлама, глобальными переменными, БД и т.п.

DHT
Как правильно поступать в данной ситуации?
Правильно в данной ситуации не использовать глобальный переменные. Знаете главное правило веба? Объекты не должны хранить состояние. Если сильно хочется - храните что-то в сесиии, в специальной таблице БД, в каком-нибудь in-memory хранилище, да хоть тупо в txt файле, но архитектура Вашего приложения должна строитиься таким образом, чтобы программа могла “подохнуть” и заново запуститься не ломая бизнес-логику. То есть каждый реквест создает новый экземпляр вьюхи или используется вьюха-синглтон имеющая толоько статические методы.



Офлайн

#3 Авг. 13, 2014 00:51:22

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Многопоточная работа с файлама, глобальными переменными, БД и т.п.

Вариант №2. Перейти на фреймверк, который уже заточен под многопоточность…

Офлайн

  • Начало
  • » Django
  • » Многопоточная работа с файлама, глобальными переменными, БД и т.п.[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version