Найти - Пользователи
Полная версия: Сессии
Начало » Web » Сессии
1
aleshgo
Как реализовать сессии на питон, используя wsgi без фреймворков.
Хотелось бы понять сам механизм.
Поделитесь примером.
zheromo
проще всего посмотреть как это сделано в нормальном 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 # возвращаем результат
o7412369815963
aleshgo
Как реализовать сессии на питон, используя wsgi без фреймворков.
Хотелось бы понять сам механизм.
Поделитесь примером.
Отправляете клиенту куку, а при получении куки от клиента создать/загрузить словарь с переменными (сессия).

А вообще возьмите фреймфорк.
igor.kaist
под “чистым” wsgi писать не очень то приятное занятие. При использовании фреймворка скорость разработки увеличивается на порядок, даже только из за того что не нужно изобретать велосипедов. Возьмите для начала простенький, то что озвучили выше (лично я юзаю web.py)
DcDr
aleshgo
Как реализовать сессии на питон, используя wsgi без фреймворков.
Хотелось бы понять сам механизм.
Поделитесь примером.
В общем случае - нужно:

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

Еще не отпало желание реализовывать самостоятельно?
Возьмите Beaker - готовый механизм сессий и кэша (разумеется, можно использовать только сессии, без кэширования).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB