Yesod/ Постоянный не закрытие соединений с БД
У меня есть веб-приложение, которое использует Yesod и Persistent. Я использую стандартные леса Foundation.hs
а также Application.hs
, Я написал функцию, которая обрабатывает локальный файл JSON, а затем вставляет строку в несколько таблиц для каждого элемента в файле JSON. Так что он будет выполнять более 1000 вставок.
Запустив функцию в GHCI, она успешно сохраняет несколько строк, а затем выдает ошибки:
libpq: failed (FATAL: sorry, too many clients already)
Используя запрос postgres:
select *
from pg_stat_activity
where datname = 'mydb-name'
Я вижу, что существует 100 свободных соединений, которые были созданы моим приложением и не закрыты. Затем мне нужно уничтожить эти соединения, чтобы иметь возможность что-либо делать.
Не должен настойчиво закрывать эти соединения как INSERT
запросы завершены? Что мне нужно сделать по-другому?