2016-04-10 11 views
0

私は現在、どのような状況になっても、Pythonスクリプトが生きているかどうかを確認しようとしています。そのため、すべての例外を捕捉し、スクリプトの応答を見つけようとしています。Python MQTT例外処理

私のスクリプトのこの時点で、私はMQTTブローカーに接続するときに起こりうるエラーを捕まえようとしています。つまり、eth0がプラグインされていないか、(2 )ルータにインターネットアクセスがありません。

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

と2のエラーメッセージは次のとおりです:1

エラーメッセージがある悲しいことに、私はこれらの例外を捕捉することはなかった

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

。これらは、私が試したものです:それは例外(socket.gaierror)として、しかし思わMQTT(PAHO)ライブラリの一部ではありません

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" 

、私はそれをキャッチするように見えることはできません。どんな助けでも本当にそれが妥協されるでしょう!

答えて

1

ソケット接続がmqttc.connect()で起こる、それはあなたが興味のある例外をキャッチしようとする必要があります。

on_connectコールバックrcパラメータは、CONNACKメッセージにMQTTブローカーによって提供される値でありますそれはソケットとは関係ありません。

+0

ありがとうございました!あなたが正しい。私はそれを逃したとは信じられません。 – user5740843