2016-04-10 19 views
0

Şu anda Python komut dosyasının hayatta kalmasını sağlamaya çalışıyorum ve bu durumun ne durumda olduğuna bakmadan, tüm istisnaları yakalamaya ve düzgün olmayan bir komut dosyası yanıtı bulmaya çalışıyorum.Python MQTT özel durum yönetimi

Scriptimde bu noktada, MQTT broker'ımla bağlantı kurarken ortaya çıkabilecek hataları yakalamaya çalışıyorum, yani bir internet bağlantısı yok (1) ya da takılı olmamak üzere eth0 aracılığıyla, ya da (2)) yönlendiricinin internet erişimi yok.

socket.gaierror: [Errno -5] No address associated with hostname 

Ve 2 kişilik hata iletisi şudur:: 1 için

hata iletisi Ne yazık ki, bu istisnaları yakalamak için olmamıştır

socket.gaierror: [Errno -2] Name or service not known 

. Bunlar denedim olanları şunlardır: Bu istisna (socket.gaierror) olarak, ancak görünüyor MQTT (PAHO) kitaplığının parçası değildir

def mqtt_listen(): 
     mqttc = mqtt.Client(machine_id, clean_session=False) 
     mqttc.username_pw_set(machine_id, mqtt_pwd) 
     mqttc.connect(mqtt_host, mqtt_port) 
     mqttc.subscribe(mqttc.topic, qos=1) 
     def on_connect(client, userdata, rc): 
       print " Attempting to connect to MQTT" 
       if rc != 0: 
         print "Unable to connect to MQTT: Connection refused. Error code (" + rc + ")" 
       elif rc == 0: 
         print "Connection to MQTT established." 
       else: 
         print "Unable to connect to MQTT: Socket error" 

, bunu yakalamak gibi olamaz. Herhangi bir yardım gerçekten bu kadar uygun olurdu!

cevap

1

soket bağlantısı size ilgilendiğiniz istisna yakalamaya çalışıyor olması gerekir, orada mqttc.connect() olur.

on_connect geri arama rc parametre CONNACK mesajında ​​MQTT komisyoncu tarafından sağlanan değer, Soketlerle ilgisi yoktur.

+0

Teşekkür ederiz! Haklısın. Bunu özlediğime inanamıyorum. – user5740843