from threadpool import *
import time
import sys
import random
src = ["src_user%d"%i for i in range(5)]
dest = ["dest_user%d"%i for i in range(5)]
src2dest = zip(src, dest)
reconnectedsrc2dest = {}
main = ThreadPool(5)
def end_reconnection(requete,couple):
m = "\n--- Reconnexion de : (%s,%s) ---\n"%(couple[0], couple[1])
time.sleep(1)
sys.stdout.write(m)
def reconnection(couple):
m = "(%s,%s) en cours de reconnnexion \n"%(couple[0],couple[1])
while not reconnectedsrc2dest[couple]:
time.sleep(random.random()*3)
sys.stdout.write(m)
return couple
def isUserReconnected(couple):
# Dans la realite : requete Exchange pour tester
# l'existence de l'attribut 'homeMDB' sur couple[1]
i = int(random.random()*4)
return (i == 3)
for req in requete:
main.putRequest(req)
reconnectedsrc2dest[req.args[0]] = False
while 1:
try:
main.poll()
time.sleep(1)
for couple in src2dest:
if isUserReconnected(couple[1]):
if len(src2dest) > 0:
reconnectedsrc2dest[couple] = True
src2dest.pop(src2dest.index(couple))
except NoResultsPending:
print "Fin Normale"
break
except KeyboardInterrupt :
print "Arret Utilisateur, destruction des Threads"
for worker in main.workers:
worker.terminate()
break