web-dev-qa-db-fra.com

Délai de connexion Sql Alchemy

J'utilise sqlalchemy avec MySQL et j'exécute une requête avec l'expression sql. Lors de l'exécution d'un certain nombre de requêtes, il expire. J'ai trouvé un réponse mais ce n'est pas clair pour moi. S'il vous plaît, n'importe qui peut m'aider?

TimeoutError: limite de file d'attente de file d'attente de dépassement de taille 5 10 atteinte, connexion expirée, délai d'expiration 30

42
Nazmul Hasan

Chaque fois que vous créez une nouvelle session dans votre code, assurez-vous de la fermer. Appelez simplement session.close()

Quand j'ai eu cette erreur, j'ai pensé que je fermais toutes mes sessions, mais j'ai regardé attentivement et il y avait une nouvelle méthode où je n'étais pas. La fermeture de la session dans cette méthode a corrigé cette erreur pour moi.

54
Greg

En mode multi-thread, si votre nombre de requêtes simultanées est bien plus que la taille du pool de connexions db, il lèvera la limite du pool de files d'attente de la taille 5, le débordement 10 atteint error. essayez avec ceci:

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

to add the pool size

Ajouter: la méthode ci-dessus n'est pas une manière correcte. La raison réelle est que le pool de connexions db est épuisé et aucune autre connexion disponible. La situation la plus probable est que vous manquez de libérer la connexion. Par exemple:

@app.teardown_appcontext
def shutdown_session(exception=None):
    db_session.remove()
12
Aaren Shar