Привязка произвольных объектов Python к сеансам CherryPy - PullRequest
0 голосов
/ 28 августа 2010

Я использую CherryPy для создания веб-интерфейса для SymPy, который использует библиотеку асинхронных процессов на стороне сервера, чтобы можно было обрабатывать несколько запросов одновременно, не дожидаясь завершения каждого из них. Чтобы интерфейс функционировал должным образом, я использую один процесс для каждой сессии. Javascript на стороне клиента отправляет идентификатор сеанса из файла cookie на сервер, когда пользователь отправляет запрос, и на стороне сервера в настоящее время используется пара списков, хранящих экземпляры класса контроллера в одном и соответствующие идентификаторы сеанса в другой - создание нового прокси-сервера интерпретатора и отправка ввода, если передан несуществующий идентификатор сеанса. Единственная проблема с этим заключается в том, что прокси-классы не удаляются по истечении срока их соответствующих сеансов. Кроме того, я не вижу ничего, чтобы получить идентификатор сеанса, для которого обслуживается текущий запрос.

Мои вопросы по поводу всего этого: есть ли способ «подключить» произвольный объект к сеансу CherryPy, чтобы он удалялся по истечении срока сеанса, есть что-то, что я пропускаю здесь, что значительно упростит вещи, и делает CherryPy многопоточность устраняет проблему синхронного чтения дескриптора файла stdout из дочернего процесса?

1 Ответ

1 голос
/ 28 августа 2010

Вы можете создать свой собственный тип сеанса, полученный из базового сеанса CherryPy.Используйте его метод clean_up, чтобы выполнить очистку.

Посмотрите на cherrypy / lib / sessions.py для подробностей и примеров реализации сеанса.

...