[mac_prises] On s'assure que le minimum de connexions SQL soit fait.
This commit is contained in:
parent
777ba5cd9c
commit
6bc8ef3949
3 changed files with 39 additions and 10 deletions
|
@ -8,8 +8,6 @@
|
|||
import os, sys, re
|
||||
from commands import getstatusoutput
|
||||
|
||||
sys.path.append('/usr/scripts/gestion')
|
||||
import annuaires_pg
|
||||
import time
|
||||
|
||||
|
||||
|
@ -19,10 +17,12 @@ import time
|
|||
# (plante lamentablement quand j'essaye avec mon compte sur vo, sous
|
||||
# ipython. Mais si je sudo ipython, ça marche...
|
||||
|
||||
def liste_chambres_macs(switch):
|
||||
def liste_chambres_macs(switch, annuaire):
|
||||
u'''
|
||||
Fonction générant un dictionnaire (macs) contenant pour chaque prise une
|
||||
liste des macs qui y sont actives.
|
||||
Reçoit annuaires_pg en second argument, pour éviter l'ouverture de
|
||||
multiples connexions sql pour rien.
|
||||
'''
|
||||
liste_bats = ['a', 'b', 'c', 'g', 'h', 'i', 'j', 'm', 'p']
|
||||
|
||||
|
@ -40,12 +40,12 @@ def liste_chambres_macs(switch):
|
|||
continue
|
||||
else:
|
||||
mac = data[port]
|
||||
uplink = annuaires_pg.uplink_prises[bat]
|
||||
uplink = annuaire.uplink_prises[bat]
|
||||
prise = num_switch*100+port
|
||||
if prise in uplink:
|
||||
continue
|
||||
|
||||
result = annuaires_pg.reverse(bat, prise)
|
||||
result = annuaire.reverse(bat, prise)
|
||||
if result:
|
||||
chbre = bat+result[0]
|
||||
if chbre in liste_chbres:
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
psql -U crans mac_prises -c "DELETE FROM correspondance WHERE date <= timestamp 'now' - interval '2 days';"
|
||||
psql -U crans mac_prises -c "DELETE FROM correspondance WHERE date <= timestamp 'now' - interval '2 days';" 1>/dev/null
|
||||
|
|
|
@ -7,6 +7,9 @@ import mac_prise
|
|||
from threading import Thread
|
||||
import time
|
||||
|
||||
sys.path.append('/usr/scripts/gestion')
|
||||
import annuaires_pg
|
||||
|
||||
class ThreadWithReturnValue(Thread):
|
||||
"""
|
||||
Classe de threading qui récupère le "return" d'une fonction, et le renvoie avec
|
||||
|
@ -18,13 +21,40 @@ class ThreadWithReturnValue(Thread):
|
|||
self._return = None
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
Méthode appelée par start.
|
||||
On la réécrit pour que le retour soit non vide.
|
||||
"""
|
||||
if self._Thread__target is not None:
|
||||
self._return = self._Thread__target(*self._Thread__args,
|
||||
**self._Thread__kwargs)
|
||||
def output(self):
|
||||
"""
|
||||
Renvoie la sortie de la fonction threadée.
|
||||
"""
|
||||
Thread.join(self)
|
||||
return self._return
|
||||
|
||||
def get_curseur(temps):
|
||||
"""
|
||||
Au cas où le nombre max de connexions est atteint.
|
||||
"""
|
||||
i = 0
|
||||
while i <= 5:
|
||||
try:
|
||||
connecteur = psycopg2.connect(database="mac_prises", user="crans")
|
||||
connecteur.set_session(autocommit=True)
|
||||
break
|
||||
except Exception as e:
|
||||
print e
|
||||
i += 1
|
||||
time.sleep(3)
|
||||
|
||||
if i == 6:
|
||||
raise EnvironmentError('Impossible de contacter la base postgresql')
|
||||
else:
|
||||
return connecteur.cursor()
|
||||
|
||||
if __name__ == '__main__':
|
||||
"""
|
||||
On envoie sur n threads les n arguments, puis on récupère les sorties
|
||||
|
@ -35,16 +65,15 @@ if __name__ == '__main__':
|
|||
threads = {}
|
||||
output = {}
|
||||
for switch in switches:
|
||||
threads[switch] = ThreadWithReturnValue(target=mac_prise.liste_chambres_macs, args=(switch,))
|
||||
threads[switch] = ThreadWithReturnValue(target=mac_prise.liste_chambres_macs, args=(switch, annuaires_pg))
|
||||
threads[switch].start()
|
||||
|
||||
# On change de boucle, car il faut absolument que tous les threads aient démarré, histoire qu'on
|
||||
# parallélise vraiment !
|
||||
for switch in switches:
|
||||
output[switch] = threads[switch].output()
|
||||
connecteur = psycopg2.connect(database="mac_prises", user="crans")
|
||||
connecteur.set_session(autocommit=True)
|
||||
curseur = connecteur.cursor()
|
||||
|
||||
curseur = get_curseur(time.time())
|
||||
|
||||
requete = "INSERT INTO correspondance (date, chambre, mac) VALUES (%s, %s, %s);"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue