Я попробую. Отказ от ответственности: у меня нет опыта работы с фреймворком web.py.
Я предлагаю вам попробовать следующее:
(1) Создайте глобальный экземпляр threading.local для отслеживания локальных объектов вашего потока (в вашем случае он будет отслеживать только один объект - сеанс базы данных).
import threading
serving = threading.local()
(2) В начале каждого запроса создайте соединение / сеанс БД и сохраните его в экземпляре threading.local. Если я правильно понимаю документацию web.py , вы можете сделать следующее:
def setup_dbconnection(handler):
serving.dbconnection = create_dbconnection(...)
try:
return handler()
finally:
serving.dbconnection.close() # or similar
app.add_processor(setup_dbconnection)
(3) В ваших методах контроллера (если они называются так в web.py?) Всякий раз, когда вам нужно соединение с БД, используйте serve.dbconnection.