Как лучше всего управлять подключением к базе данных в приложении Google Cloud SQL (GAE) Python?

Я только изучаю Google App Engine и пытаюсь найти хороший подход к управлению подключением моей базы данных к экземпляру Google Cloud SQL (если вы не использовали GC-SQL, в основном это MySQL в облаке, с некоторыми ограничениями).

Я использую среду python (2.7) GAE с инфраструктурой webapp2 для обработки запросов. Я знаю, что в FAQ говорится, что рекомендуется устанавливать новое подключение к БД с каждым запросом, но Я не знаю, какой рекомендуемый способ закрытия соединения.Каждый раз, когда я пытаюсь удалить таблицы во время разработки, GC-SQL зависает, а «показать список процессов» показывает, что есть куча процессов (вероятно, потому что я не закрытие БД) и что один из них ожидает блокировки (вероятно, процесс пытается удалить таблицы). ying и заставляет меня перезапустить экземпляр GC-SQL (я думаю, что это похоже на перезапуск службы mysql-server). Также иногда случаются сбои в работе БД, которые, как мне кажется, связаны с тем, что я на самом деле не закрываю соединение с БД.

Итак, например, должен ли я иметь деструктор в моем экземпляре подкласса webapp2.Requesthandler для отключения от БД? Объекты GAE иногда кэшируются, так что это тоже нужно учитывать. Я полагаю, что мог бы просто подключаться/запрашивать/отключаться для каждого запроса, но это кажется неоптимальным.

Я знаю, что это расплывчатый вопрос, но я надеюсь, что кто-то, кто играл в этой области, может дать мне несколько советов.

Заранее спасибо!

Обновление: Я попытался реализовать оболочку для методов, которым нужен курсор, используя ответ Шэя в качестве отправной точки. Я получаю ошибки GAE. Вот новый вопрос, связанный с этим: Каковы ограничения на количество подключений для Google Cloud SQL от App Engine и как лучше всего повторно использовать подключения к БД?

10
задан Community 23 May 2017 в 12:30
поделиться