みなさん、こんにちは。
API にタイムリーにアクセスできない問題に直面しています。以下の URL にアクセスしています:
API キーとユーザーを作成し、現時点ではすべて問題なさそうです。
Postman で適切な認証情報を使用してテストすると、期待通りすぐにデータが返ってきます。
問題は、Postman 以外の場所(例えば自分のコード)からアクセスしようとした際に発生します。データが返ってくるまでに数分かかり、最終的にはデータが返ってきます。
terminal でも同じ問題が発生します:
wget --no-check-certificate --quiet \
--method GET \
--timeout=0 \
--header 'Api-Key: correct-api-key-here' \
--header 'Api-Username: <correct user name here>' \
'https://community.tenxguitar.com/c/7.json'
これは私の Python コードと同じ挙動です。フォーラム側でこの問題に影響を与える設定はないと思います。どなたかアドバイスやサポートをお願いします。
ありがとうございます!
「いいね!」 1
Richie
(Richie Rich)
2
Postman とあなたの例のコマンドラインコードは、どちらも同じマシンから実行されていますか?
wget ではなく、比較のために 3 番目の手段として curl を試しましたか?
「いいね!」 3
wget に -4 オプションを追加すると、結果は即座に返ってきますか?
もしそうでない場合、-v オプションを追加した際のプロット(伏字処理済み)を掲載していただけますか?
「いいね!」 5
マイケル、
馴染みのない -4 オプションを試しましたが、即座に期待通りに動作しました。その後 -v オプションを試したところ、正しく読み取れれば SSL タイムアウトのようです。以下が -v の出力です。-4 オプションについて詳しく教えていただけますか?ありがとうございます!なお、リンクの投稿制限により一部を省略しました。
community.tenxguitar.com (community.tenxguitar.com) の解決… 2001:470:1:59e::139, 66.220.12.139
<コミュニティ> への接続
(<コミュニティ>)|2001:470:1:59e::139|:443… 失敗: 接続がタイムアウトしました。
<コミュニティ> への接続 (<コミュニティ>)|66.220.12.139|:443… 接続済み。
HTTP リクエストを送信し、応答を待機中… 200 OK
長さ: 未指定 [application/json]
保存先: ‘7.json.4’
「いいね!」 1
お使いのマシンには IPv4 と IPv6 の両方のアドレスが設定されていますが、IPv6 の接続に問題があり、IPv6 経由の接続試行がタイムアウトしています。
wget(おそらく Python コードも)はまず IPv6 で接続を試み、タイムアウトした後、IPv4 で正常に接続しています。しかし、-4 を指定して IPv4 のみを強制すると動作します。
Postman はおそらく IPv4 のみを使用しているか、IPv4 と IPv6 を同時に試して、最初に接続できた方を使用する仕組みになっています。
お使いのネットワークで IPv6 接続が機能しない理由を調査する必要があります。接続が即座に失敗するだけでも、wget が IPv6 を待つことなくすぐに IPv4 を試すようになるため、改善されます。
(あるいは、接続を IPv4 のみに強制する)
「いいね!」 9
ありがとうございます、さん!それは興味深いですね。調べてみます。改めてありがとうございます。
system
(system)
クローズされました:
8
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.