Ограничение на подключение к БД Heroku при использовании Python ThreadPoolExecutor

У меня есть приложение Django, размещенное на Heroku. Некоторые запросы пользователей к этому приложению требуют выполнения длительных запросов к внешним ресурсам. Чтобы обойти таймаут Heroku в 30 запросов, я создал систему, в которой этим длительным запросам присваиваются уникальные идентификаторы и передаются Python ThreadPoolExecutor, чтобы не задерживать запрос. Оригинальный запрос возвращается немедленно, а конечный JS-код шрифта периодически проверяет результаты.

Эта система работает отлично, но после развертывания этого изменения я регулярно получаю ошибки "FATAL: слишком много соединений" от моего приложения. Похоже, что автоматическое управление соединениями, которое обеспечивает Django, не работает, когда используются ThreadPoolExecutors.

К сожалению, мне необходимо иметь доступ к БД из порожденного потока, чтобы сохранить результаты длительного запроса. Посоветуйте, как это исправить, чтобы соединения с БД управлялись правильно?

Вернуться на верх