Я создаю приложение на платформе Pyramid и хотел бы использовать с ним web2py-DAL.Встроенная в Firebird база данных.
Это прекрасно работает, пока я не попытаюсь вызвать несколько представлений с одной веб-страницы асинхронно.Различные ошибки, такие как «Недопустимое состояние курсора», «Недопустимая ссылка курсора» или «Попытка повторно закрыть закрытый курсор», появляются из драйвера kinterbasdb, где sqlite просто ломается без каких-либо сообщений об ошибках и забирает с собой python.Эти вызываемые представления делают только простое чтение с помощью SELECTing.
Это происходит в том случае, если корневая фабрика пирамид возвращает один и тот же объект DAL при каждом запросе.Кажется, что потоки из разных запросов работают с одним и тем же объектом курсора, поэтому курсор закрывается, в то время как другой поток предполагает, что курсор находится здесь.
Если я создаю новый объект DAL при каждом запросе, я получаюДругая проблема - каждое новое соединение по каждому запросу выделяет память, и эта память не освобождается.Таким образом, после нескольких запросов доцентов память теряется сотнями МБ.
К сожалению, Sqlalchemy не подходит для этого проекта.
Есть какие-нибудь идеи?