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