2009-10-16 7 views
0

J'ai rencontré des problèmes d'indisponibilité à la suite de l'utilisation de la limite max_user_connections dans MySQL. Le délai de connexion par défaut est de 8 heures, donc une fois que nous avons atteint la limite (et n'ayant pas accès pour tuer les connexions sur notre hébergement partagé), j'ai simplement dû attendre 8 heures pour les connexions à expiration.Django - SQL personnalisé dans la chaîne de connexion

Je voudrais ajouter le code suivant à ma chaîne de connexion:

SET wait_timeout=300; 

Ce qui serait changer le délai d'attente à 5 minutes. Comme vous pouvez l'imaginer, je suis beaucoup plus heureux de faire face à 5 minutes d'arrêt que 8 heures. ;)

Existe-t-il un bon moyen d'ajouter SQL personnalisé à la chaîne de connexion dans django?

Si ce n'est pas le cas, il a été suggéré que nous écrivions middleware qui exécute le SQL avant le traitement de la vue.

Cela pourrait fonctionner, mais je me sentirais plus à l'aise en sachant que la requête était absolument garanti pour s'exécuter pour chaque connexion, même si plus d'une connexion est ouverte pour chaque vue.

Merci! PS: avant de me dire que je devrais juste chercher le code qui empêche les connexions d'être fermées - Ne jamais craindre! - nous faisons cela, mais je voudrais avoir cette assurance supplémentaire contre un autre bloc de 8 heures de temps d'arrêt

+0

N'êtes-vous pas en mesure de changer la configuration mySQL? – Mez

+0

peut-être que vous voulez dire "chaîne de requête" au lieu de "chaîne de connexion"? – nosklo

Répondre

1

Vous pouvez spécifier une liste de commandes pour envoyer à MySQL lorsque la connexion est ouverte, en réglant le dictionnaire DATABASE_OPTIONS au settings.py.

(Soit dit en passant, notez que Django n'ouvre pas une nouvelle connexion pour chaque point de vue.)

+0

Bonne info! merci beaucoup c'est exactement la solution que j'espérais :) – Jiaaro

Questions connexes