У меня есть Flask API, которым управляет gunicorn. Насколько мне известно и этот SO связывает gunicorn, должен автоматически обрабатывать любые ошибки сломанной трубы, поэтому эта ошибка сбивает меня с толку. Всякий раз, когда пользователь достигает конечной точки API, выполняется вызов базы данных MySQL с помощью SQLAlchemy. Я подозреваю, что соединение SQLAlchemy остается открытым после запроса, но у меня были проблемы с проверкой этой информации. В журналах приложения я обнаружил следующие сигналы об ошибках, но у меня возникли трудности с воспроизведением поведения самостоятельно.
[INFO] Handling signal: term
[17] [INFO] Worker exiting (pid: 17)
[16] [INFO] Worker exiting (pid: 16)
[24] [INFO] Worker exiting (pid: 24)
[18] [INFO] Worker exiting (pid: 18)
[19] [INFO] Worker exiting (pid: 19)
[22] [INFO] Worker exiting (pid: 22)
[23] [INFO] Worker exiting (pid: 23)
[20] [INFO] Worker exiting (pid: 20)
[21] [INFO] Worker exiting (pid: 21)
[1] [INFO] Shutting down: Master
ERROR:sqlalchemy.pool.impl.QueuePool:Exception during reset or similar
BrokenPipeError: [Errno 32] Broken pipe
Почему это поведение не может быть обработано, когда пользователь отключается преждевременно, и как я могу проверить, какие соединения остаются открытыми при завершении программы?