Community

コミュニティをご利用の際は 【ガイドライン】を確認・同意いただいた上でご利用ください。

  • 投稿

    アバターmaeda.tadashi

    APIのエラーについて

    お世話になっております。
    APIを使用して、事業所毎に科目、取引先、仕訳などのデータを取得しておりますが、
    Remote end closed connection without responseのエラーが出てしまします。
    頻度も毎回ではないですが、3事業所中2事業所やAPIも7つ中5つなど
    エラーが出るAPIもバラバラです。

    ローカルの開発環境では問題なく動いているのですが、
    GCP上のVMにプログラムを設置した場合となります。

    どういった状況でこのエラーが出て、どのように処理すればエラーが出なくなるのでしょうか?

    よろしくお願いいたします。

    回答

    アバターyakumo

    今わかっている情報を見る限り freee の API のエラーでなく、ソフトウェアもしくは実行環境に依存した問題のように思われます。

    実装時に利用されている言語は python ですか?

    “Remote end closed connection without response” で検索すると python 系の記事が多々出てくるので、
    そちら調べて見ると良い気がします。

    response が json で返って来ていて、status code が 2xx 以外の場合は API エラーになると思うのですが、
    ぱっとみリクエスト自体が届いてないような気がします。

    アバターmaeda.tadashi

    yakumoさん

    回答ありがとうございます。

    開発言語は python です。

    デバッグ環境では出たことのないエラーなので
    ソフトウェアではなくサーバーの環境問題のように思います。

    少し検索してみましたが、エラーが出たときの対処はすぐに見つかったのですが、
    エラーが出ないようにする方法はまだ見つけることが出来ていません。

    しばらくは検索してみます。

    あと、エラーが出ない場合もあり、30分くらいでレスポンスが返ってくることもあります。
    レスポンスの内容は正常です。

    アバターyakumo

    たしかに通信環境系になにかありそうですね。

    30分後にレスポンスは現実的に考えにくい気がします。
    (タイムアウトする気がします)

    なのでHTTPSのリクエスト後30分かかったのではなく、
    リクエストを送るまでにどこかで詰まってる可能性もありそうですね。
    * 純粋に通信が遅い
    * 名前解決ができてない or 遅い
    * FW 等でブロックされている帯域がある
    etc

    アバターmaeda.tadashi

    解決しました。

    uWsgiのデフォルトスレッド数が1のため、
    スレッドの数が増えずとてつもなく時間がかかっていました。

    ローカルではmanage.py runserverで動かしていたので、スレッドの制限がかかっていませんでした。

    なので、ローカルでは上手く行ってもサーバーではダメでした。
    適切な数は今後詰めていくとして、とりあえず、uWsgiのスレッド数を増やして対応しました。

    アバターyakumo

    LGTM!