Время соединения Алхимии - PullRequest
40 голосов
/ 29 июля 2010

Я использую sqlalchemy с MySQL и выполняю запрос с выражением sql. При выполнении нескольких запросов время истекает. Я нашел ответ , но он мне не понятен. Пожалуйста, кто-нибудь может мне помочь?

TimeoutError: достигнуто ограничение QueuePool размера 5, переполнение 10, превышено время ожидания соединения, время ожидания 30

Ответы [ 2 ]

52 голосов
/ 29 июля 2010

Всякий раз, когда вы создаете новый сеанс в своем коде, обязательно закрывайте его. Просто позвоните session.close()

Когда я получил эту ошибку, я подумал, что закрываю все свои сессии, но я внимательно посмотрел, и был один новый метод, которого я не сделал. Закрытие сеанса в этом методе исправило эту ошибку для меня.

12 голосов
/ 20 января 2015

В многопоточном режиме, если номер вашего параллельного запроса намного больше, чем размер пула соединений с БД, он выбросит ограничение пула очереди размером 5, переполнение 10 достигло error.попробуйте это:

engine = create_engine('mysql://', convert_unicode=True, 
pool_size=20, max_overflow=100)

to add the pool size

Добавить: описанный выше способ не является правильным.Фактическая причина заключается в том, что пул соединений базы данных израсходован, а других доступных соединений нет.Скорее всего, вы пропустите соединение.Например:

@app.teardown_appcontext
def shutdown_session(exception=None):
    db_session.remove()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...