Я создал API-ключ и пользователя, и пока всё выглядит хорошо.
Когда я тестирую это через Postman с правильными учётными данными, он мгновенно возвращает данные, как я и ожидал.
Проблема возникает, когда я пытаюсь получить доступ к нему из другого места, кроме Postman… например, из моего кода. Ответ приходит через МИНУТЫ, но в итоге данные всё же возвращаются.
Такая же проблема возникает в терминале с помощью следующей команды:
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-коде. Я не думаю, что у меня есть какие-либо настройки конфигурации (на форуме), которые могли бы повлиять на это. Не могли бы вы, пожалуйста, дать совет или помочь?
Я попробовал опцию -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’
На вашем компьютере сейчас настроены как IPv4, так и IPv6 адреса, но подключение по IPv6 не работает, и попытки соединения через IPv6 завершаются по таймауту.
wget (и, вероятно, ваш код на Python) сначала пытается использовать IPv6, ожидает истечения времени ожидания, а затем успешно подключается через IPv4. Однако это работает, когда опция -4 принудительно использует IPv4.
Вам нужно выяснить, почему подключения по IPv6 не работают в вашей сети. Даже если они сразу завершаются неудачей, это лучше, так как wget сразу перейдёт к попытке подключения через IPv4, не ожидая истечения таймаута IPv6.
(или принудительно используйте только IPv4 для всех подключений)