Python - Excepciones paran el script consultando FireBase

 
Vista:
sin imagen de perfil

Excepciones paran el script consultando FireBase

Publicado por alberto (3 intervenciones) el 15/12/2017 12:42:08
Hola.
Es la primera vez que consulto algo así que me presento, me llamo Alberto y expongo una consulta:

Tengo un script python corriendo en raspberry que realiza unas lecturas muy básicas en FireBase. Funciona bien, lo único que pasadas unas horas o incluso dias el script python se corta por diversas excepciones:
- requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: https://xxxxx-xxxx.firebaseio.com/home/led7.json
- ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:600)
- requests.packages.urllib3.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:600)
entre otras aunque la más común es la HTTPError. Lo he probado con dos raspberrys y corriendo con python 2 y 3 y ocurre lo mismo.

Mi pregunta es si hay forma de:
1. ignorar las excepciones y que no se corte la ejecución del código python
2. reiniciar el código python automaticamente en caso de que se corte

Gracias y saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Excepciones paran el script consultando FireBase

Publicado por algoritmo (245 intervenciones) el 15/12/2017 15:49:12
Hola

¿Has considerado con Try / Except ?

1
2
3
4
try:
   ... instrucción
except:
  ... instrucción alternativa en caso de error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Excepciones paran el script consultando FireBase

Publicado por alberto (3 intervenciones) el 15/12/2017 17:41:10
Hola.
Si lo he probado:

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
while True:
    try:
        # entrada5 a rele1+rele2+alarma
        entrada5 = db.child("home/led5").get()
        if entrada5.val() == 1:
            if (time.strftime("%S")) == "00": print ("",(time.strftime("%d/%m/%y %H:%M:%S")),"   ENTRADA 4: ALARMA ")
            GPIO.output(12,0)   # 20, rele1, F
            sleep(0.5)
        else:
            GPIO.output(12,1)   # 20, rele1, F
 
    except KeyboardInterrupt:
        print ("Se ha producido una excepción: TypeError")
 
    except ValueError:
        print ("xxxxxxxx")
        pass
 
    except requests.exceptions.HTTPError:
        print ("Se ha producido una excepción: requests.exceptions.HTTPError")
 
    except TypeError:
        print ("Se ha producido una excepción: TypeError")
 
    except NameError:
        print ("Se ha producido una excepción: TypeError")
 
    except NotImplementedError:
        print ("Se ha producido una excepción: NotImplementedError")
 
    except HTTPError:
        print ("Se ha producido una excepción: HTTPError")
 
    except ConnectionError:
        print ("Se ha producido una excepción: ConnectionError")

La excepción KeyboardInterrupt por ejemplo si que me funciona bien pero las otras que me devuelve el sistema entre otras son del tipo:
requests.exceptions.HTTPError:
HTTPError:
ssl.SSLEOFError:
y en el editor de python ni siquiera me las escribe en color morado (se quedan en negro) así que no deben de ser válidas y no se cómo incluirlas para que las tome como una excepción válida ¿alguna sugerencia para incluirlas? ¿cómo se puede hacer que se reinicie el código cuando se corta?

Gracias y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Excepciones paran el script consultando FireBase

Publicado por alberto (3 intervenciones) el 16/12/2017 22:56:50
Hola.
Finalmente se ha resuelto.
Era exactamente como indicaba algoritmo, con except: y sin indicar el tipo de excepción, así recoge todos los tipos de excepciones y no se corta el script.
Gracias y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar