Bonjour,

Je cale un peu sur un petit problème.
En fait j'ai une fonction qui tourne en boucle toutes les x secondes pour pinguer un serveur et si celui-ci ne répond plus j'ouvre une fenêtre où l'utilisateur peut encoder quelque chose qui est sauvé avec l'heure système.
Pour faire ça pas de problèmes mais le problème est que quand la fenêtre s'ouvre, la fonction arrête de pinguer en boucle

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
def MyTimer(isOpen,tempo = float(time)):
 
    #si linux   
    if sys.platform == "linux2":
        lPing = subprocess.Popen(["ping","-c", "1 ", ip ],  
					    stdout = subprocess.PIPE, 
					    stderr = subprocess.PIPE) 
    elif sys.platform == "win32":
        lPing = subprocess.Popen(["ping","-n", "1 ", ip ],  
					    stdout = subprocess.PIPE, 
					    stderr = subprocess.PIPE) 
 
    sLigne, erreur = lPing.communicate()
    print sLigne
    #si linux   
    if sys.platform == "linux2":
        info_reg = info_reg = re.search(r'(\d+) packets transmitted',sLigne,re.M)
        transmis = int(info_reg.group(1))
        info_reg = info_reg = re.search(r'(\d+) received',sLigne,re.M)
        received = int(info_reg.group(1))
        info_reg = info_reg = re.search(r'(\d+)% packet loss',sLigne,re.M)
        loss = int(info_reg.group(1))
        info_reg = info_reg = re.search(r'time (\d+)ms',sLigne,re.M)
        time = int(info_reg.group(1))
 
    now = datetime.datetime.now()
    #si l'expression régulière a donné un résultat
    if transmis > 0:
        isDown = False
        if received == 0:
            isDown = True
	    #si le serveur répond après avoir été down et qu'il y a un fichier à uploader alors upload
	    #recupere les parametres du fichier 
        if isDown == 'False':
            isOpen = False
            if(os.path.exists(pathLoc) and os.path.getsize(pathLoc) > 0):
                transport = paramiko.Transport((ip, port)) 
                transport.connect(username = user, password = passwd) 
                sftp = paramiko.SFTPClient.from_transport(transport) 
                sftp.put(pathLoc,pathServ) 
                sftp.close() 
                transport.close() 
                #print 'Upload done.' 
                os.remove(pathLoc)                  #supprime fichier
        else:
	        if(received == 0 and isOpen == False):
	            print now.strftime("%d/%m/%YT%H:%M:%S")
	            fen_matricule(racine)
	            isOpen = True
    else:
        received = 0
        if(received == 0 and isOpen == False):
            print now.strftime("%d/%m/%YT%H:%M:%S")
            fen_matricule(racine)
            isOpen = True
 
    threading.Timer(tempo, MyTimer, [isOpen,tempo]).start()
 
def fen_matricule(racine):
 
	fond=Tkinter.Canvas(racine, width=300, height=200, background='darkgray')
	fond.pack()
	texte=Tkinter.Label(fond, text="Matricule", fg="black")
	texte.pack(side=Tkinter.LEFT)
	valsaisir=Tkinter.StringVar() #variable to get value
	saisie=Tkinter.Entry(textvariable=valsaisir, width=30)
	saisie.pack()
	bouton=Tkinter.Button(racine, text="OK", command=lambda: save(valsaisir.get(),racine,saisie)).pack(side=Tkinter.BOTTOM)
	"""
        bouton=Tkinter.Button(racine, text="Quitter", command=racine.quit)
        bouton.pack(side=Tkinter.BOTTOM)
        """
	racine.mainloop()
	MyTimer(isOpen,float(time))
J'ai besoin que ça continue de pinguer tout en laissant cette fenêtre ouverte et si il répond de nouveau je ferme la fenêtre et préviens l'utilisateur que le serveur est de nouveau dispo


Merci de votre aide