Giorno.
Uno script connette un servizio via Telnet. Poi, come un qualsiasi client, ad ogni ciclo legge l'eventuale output del server con la funzione read_very_eager, della libreria inclusa in Python, telnetlib. Tuttavia, se l'utente non interagisce con il server per un periodo impostato da quest'ultimo, pari a circa 60 minuti, la connessione viene chiusa. read_very_eager però, non se ne accorge e, a parte il fatto che naturalmente non legge nulla, non solleva nemmeno alcuna eccezione e lo script continua a girare senza errori. Se l'utente poi torna al terminale dopo 60 minuti ed invia un comando, il client trova la connessione chiusa e viene sollevata questa eccezione:

Traceback (most recent call last):
  File "C:\Dropbox\Py\Bici.py", line 302, in <module>
    s = tn.read_very_eager()
  File "C:\Python27\lib\telnetlib.py", line 416, in read_very_eager
    self.fill_rawq()
  File "C:\Python27\lib\telnetlib.py", line 576, in fill_rawq
    buf = self.sock.recv(50)
socket.error: [Errno 10054] Connessione in corso interrotta forzatamente dall'host remoto

C:\Dropbox\Py>

La domanda è, a parte la gestione dell'errore con un try:, esiste un altro modo per verificare, ad intervalli regolari, se la connessione è ancora attiva?

Grazie.
Gabriele.
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a