Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 29, 2011 15:09:20

aleshgo
От:
Зарегистрирован: 2011-01-29
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Сессии

Как реализовать сессии на питон, используя wsgi без фреймворков.
Хотелось бы понять сам механизм.
Поделитесь примером.



Офлайн

#2 Янв. 29, 2011 15:57:40

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Сессии

проще всего посмотреть как это сделано в нормальном WSGI фреймворке или WSGI библиотеке, например werkzeug, paste, beaker, wsgistate и т.д.

Я в своё время тоже писал нечто подобное (на основе webob) - приведу кусок кода показывающий основной принцип.

class SessionMiddleware(object):

def __init__(self, app, store, initializer=None, config=session_parameters):
self.app = app
self.store = store
self.session = utils.ThreadedDict()
self._initializer = initializer
self._last_cleanup_time = 0
self._config = config

@controller
def __call__(self, req):
self._cleanup() # чистим старые сессии
self._load(req) # загружаем сессию из куки
req.session = self.session
res = req.get_response(self.app) # выполняем обертываемое приложение
self._save(res) # сохраняем сессию в хранилище
return res # возвращаем результат



Офлайн

#3 Янв. 30, 2011 14:27:05

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

Сессии

aleshgo
Как реализовать сессии на питон, используя wsgi без фреймворков.
Хотелось бы понять сам механизм.
Поделитесь примером.
Отправляете клиенту куку, а при получении куки от клиента создать/загрузить словарь с переменными (сессия).

А вообще возьмите фреймфорк.

Офлайн

#4 Янв. 31, 2011 10:15:26

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Сессии

под “чистым” wsgi писать не очень то приятное занятие. При использовании фреймворка скорость разработки увеличивается на порядок, даже только из за того что не нужно изобретать велосипедов. Возьмите для начала простенький, то что озвучили выше (лично я юзаю web.py)



Офлайн

#5 Фев. 6, 2011 13:10:33

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

Сессии

aleshgo
Как реализовать сессии на питон, используя wsgi без фреймворков.
Хотелось бы понять сам механизм.
Поделитесь примером.
В общем случае - нужно:

1. Получать от клиента некую куку. Допустим “mysession”
2. Ежели у клиента ее нет, значит, это новый посетитель. Нужно сгенерировать куку “mysession”, положить информацию о ней на диск (в файл или в БД) и отправить новую куку пользователю.
3. Если у клиента кука “mysession” есть, то ищем ее в БД или в файле, где сохраняли при создании. Если таковой куки нет на диске - значит, это очень старая сессия или обманка. Генерим новую (как в п. 2).
4. Если у клиента кука “mysession” соответствует записи в БД или файлу на диске, то, считай, сессию нашли. То что лежит на диске - и есть параметры сессии.

Еще не отпало желание реализовывать самостоятельно?
Возьмите Beaker - готовый механизм сессий и кэша (разумеется, можно использовать только сессии, без кэширования).



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version