Почему http.server отвечает через две секунды?

Всем привет!

У меня есть максимально-упрощенный http.server для возврата статичного значения на GET-запрос. В случае с запросом через Postman на получения ответа уходит 2-4ms (примерно столько я и ожидаю получить), но в случае, если я отправляю запрос программно, через urllib.request.urlopen или requests.get ответ видно через две секунды. При этом почему-то всегда почти ровно две.

Мой вопрос: почему urllib.request.urlopen или requests.get отображает ответ с ощутимой задержкой? Ниже прилагаю упрощенный код и анализ его работы методом datetime.now().

Python 3.11

PS: мне говорили, что datetime не лучший способ замерять тайминги, но тут время, которое он выдает похоже на правду по ощущениям.

Результат исполнения проверки

Пример из Postman, который тот же запрос выполняет в ожидаемое время:

Почему http.server отвечает через две секунды?

Дополнительно:

SERVER_ADDRESS = 'localhost'
меняешь на
SERVER_ADDRESS = '127.0.0.1'

объяснять нужно? и вооьбще - какую проблему решаем-то?

  • Можете объяснить? Не совсем понимаю почему
  • Shandy, DNS Resolv

    сюда сайтец закинь любой, узнаешь что это такое
    https://ping-admin.com/free_test/

  • Dimonchik, так он же в hosts прописан по идее, почему 2 секунды?
  • Это помогло, спасибо большое!

    Желательно правда объяснить или сказать что читать. Почему Postman не ждёт DNS?

    В общем побежал гуглить, мне в голову не приходило, что localhost может резолвиться две секунды)

  • Почему Postman не ждёт DNS?

    мухлюет
    сразу обращается по IP

    думаю можно поймать заменив в хостс локалхост на что=то удаленное, но может и нет )

  • Shandy,

    # localhost name resolution is handled within DNS itself.
    # 127.0.0.1 localhost
    # ::1 localhost

    прописан но

    ЗАКОММЕНТИРОВАН :D 😀 😀

  • Dimonchik, забавно получается)

Ответы:

Возможно клиент отправляет заголовок Expect: 100-continue, а сервер не умеет его обрабатывать

 

Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.

 

    • Почему http.server отвечает через две секунды?Есть ответ
    • 07.04.2024
    Ответить

    Проблема с задержкой в ответе от http.server может быть вызвана несколькими причинами. Вот несколько возможных причин и способы их решения:

    1. **Высокая загрузка сервера**: Если ваш сервер перегружен большим количеством запросов, это может привести к задержке в ответе. Для решения этой проблемы, вы можете попробовать увеличить ресурсы сервера или оптимизировать ваш код для уменьшения нагрузки.

    2. **Сетевые проблемы**: Задержка в ответе также может быть вызвана проблемами с сетью, такими как низкая пропускная способность или нестабильное соединение. Попробуйте проверить ваше сетевое соединение и убедитесь, что оно работает корректно.

    3. **Неэффективный код**: Если ваш код неоптимален, это также может привести к задержкам в ответе от сервера. Проверьте свой код на возможные узкие места и оптимизируйте его для улучшения производительности.

    4. **Настройки сервера**: Некоторые настройки вашего сервера могут вызывать задержку в ответе. Проверьте конфигурацию сервера и убедитесь, что она настроена правильно для обработки запросов быстро и эффективно.

    Вот пример использования http.server в Python с использованием модуля http.server:

    Если проблема с задержкой в ответе сохраняется, рекомендуется провести дополнительное тестирование и анализ для выявления конкретной причины задержки.

Оставить комментарий