Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Глобальные переменные общие для всех сеансов [RSS Feed]

#1 Сен. 24, 2009 18:28:10

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

Глобальные переменные общие для всех сеансов

Как создать такую переменную? Как во время сеанса изменять ее значение, чтобы оно было доступно другим?
Как объявить в функции, вроде понятно - global v, а где ее создать?
В settings вроде бы сеансовые переменные.

В этих переменных должны храниться результаты запросов к статичным справочникам.



Офлайн

#2 Сен. 24, 2009 19:35:25

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Глобальные переменные общие для всех сеансов

Что такое “сеанс”?



Офлайн

#3 Сен. 24, 2009 19:56:10

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

Глобальные переменные общие для всех сеансов

Daevaorn
Что такое “сеанс”?
Им. в виду место где хранятся сеансовые переменные. Например выбранный язык. Это место мне не подходит, т.к. оно обновляется.

Нужно, чтобы при запросе пользователя эти переменные были уже где-то инициализированы или инициализировались впервые для всех пользователей.



Офлайн

#4 Сен. 24, 2009 20:03:29

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Глобальные переменные общие для всех сеансов

А, имеется в виду сессия.
Такие значения лучше вообще в базе хранить.

Отредактировано (Сен. 24, 2009 20:03:50)

Офлайн

#5 Сен. 24, 2009 20:38:30

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Глобальные переменные общие для всех сеансов

Ferroman
Такие значения лучше вообще в базе хранить.
Похоже автор топика как раз стремиться избежать запросов к базе. ИМХО тут memcached будет очень уместен.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Сен. 26, 2009 11:52:42

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Глобальные переменные общие для всех сеансов

Я для подобного пользую threading.local() наполняя его в раннем middleware - решаю где взять содержимое переменной, и брать ли содержимое вообще.
З.Ы. Для полного persistance - все равно придется дергать БД, главное оптимизировать “когда”, и “сколько раз”.



Отредактировано (Сен. 26, 2009 11:54:17)

Офлайн

#7 Сен. 28, 2009 11:53:03

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

Глобальные переменные общие для всех сеансов

PooH
Ferroman
Такие значения лучше вообще в базе хранить.
Похоже автор топика как раз стремиться избежать запросов к базе. ИМХО тут memcached будет очень уместен.
Да пожалуй, так и сделаю, только на окончательной стадии, после оптимизации кода без кэширования.
Но как memcached массивы данных во вьюхах кэшировать?



Офлайн

#8 Сен. 28, 2009 11:55:25

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

Глобальные переменные общие для всех сеансов

denz
threading.local() наполняя его в раннем middleware
Это интересно, а можно простой пример посмотреть?



Офлайн

#9 Сен. 28, 2009 12:40:57

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Глобальные переменные общие для всех сеансов

Nick2009
Но как memcached массивы данных во вьюхах кэшировать?
Да хотя бы тупо через pickle



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#10 Окт. 1, 2009 19:13:07

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Глобальные переменные общие для всех сеансов

Nick2009
denz
threading.local() наполняя его в раннем middleware
Это интересно, а можно простой пример посмотреть?
См. django/util/_threading_local.py, там в начале адекватное описание.



Офлайн

  • Начало
  • » Django
  • » Глобальные переменные общие для всех сеансов[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version