電気ウナギ的○○

About Home

Python requests の接続エラーとタイムアウトエラー

shinoda (2020年2月 2日 11:37)
Python の requests ライブラリを使って Web API を叩くクライアントソフトを作ってるんだけど、接続時のタイムアウト処理をしようと思って、

    try:
        res = requests.post('https://127.0.0.1:3000/', data={'data': data}, stream=True, timeout=(3.0, 7.5))
    except requests.exceptions.ConnectTimeout:
        print('Requests.POST Timeout ' + data)
        return(901)
    else:
        print('Success' + data)
        return(res.status_code)
    finally:
        pass

こんな風に書いてたんだけど、サーバを立ち上げていない状態で一向にタイムアウト例外が発生しない。

んん???と思って、

    except requests.exceptions.RequestException as e:
        print(str(e))
        return(909)

と全部の requets 関係の例外を引っ掛けてみたら、

httpConnectionPool(host='127.0.0.1', port=3000): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.httpConnection object at 0x000000000523AE48>: Failed to establish a new connection: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。'))

だって。そうか、そうか。接続先のサーバにそもそも接続できない時は、レスポンス待ちにもなっていないわけだから、接続タイムアウトエラーではなく接続エラーなんだな。

というわけで、接続エラーを引っ掛ける

    except requests.exceptions.ConnectionError:
        print('Requests.POST ConnectionError ' + data)
        return(901)

という例外処理も追加しておかねばな。サーバが落ちてるんか、立ち上がっているけど反応が遅いのかわからんからな。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/5530

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE