Безсерверный локальный сервер WSGI работает медленно

1

Я использую пакет узлов serverless-wsgi 1.4.9 для обслуживания маршрутов моего безсерверного приложения

Когда я бег по DEV сервер serverless wsgi serve у меня возникает проблемы с запросами занимает много времени (10seconds - 1мин), чтобы вернуть ответ в хроме. Чтобы избежать попадания в базу данных, я отправляю запрос GET на маршрут, который немедленно возвращает "hello world" 200.

Пока единственное предсказуемое поведение, которое я могу найти, заключается в том, что выполнение запроса с использованием jquery всегда приведет к длительной задержке перед возвратом. Если я попробую запросить тот же URL-адрес на вкладке браузера (пока запрос jquery все еще ждет), вкладка также ждет много времени для возврата запроса.

Однако, как только запрос jquery возвращается, вызывая URL-адрес на вкладке браузера, он немедленно возвращается. Обновление вкладки дает ответ немедленно.

Иногда, если запрос jquery находится на рассмотрении, вызов URL-адреса на вкладке браузера будет немедленно возвращен. Когда это происходит, похоже, это также делает запрос jquery возвратом ответа.

Код JQuery:

  $( document ).ready(function() {
    $.get("http://localhost:5000/test", function(data, status){
      alert("Data: " + data + "\nStatus: " + status);
    });
  });

Я попытался перезапустить сервер, браузеры и мою машину, но проблема все еще сохраняется.

Я пробовал несколько браузеров (сафари, хром, firefox), и все они имеют ту же проблему.

Я попытался сделать запрос javascript, используя axios вместо jquery, но все же запросы медленно возвращаются.

Кто-нибудь знает, как я могу решить эту или любую дополнительную отладку, которую я могу сделать?

Теги:
serverless-framework
wsgi
werkzeug

1 ответ

1
Лучший ответ

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

https://hackernoon.com/chrome-preconnect-breaks-singly-threaded-servers-95944be16400

Способ решения этой проблемы - установить сервер WSGI для разрезания потоков. Я поднял вопрос с командой, поскольку в настоящее время это невозможно сделать, если вы используете serverless-wsgi.

В процессе работы вы можете отключить функцию предварительного соединения в хроме. Перейдите в настройки/перейти/Конфиденциальность и безопасность и отключите "Использовать службу прогнозирования для более быстрой загрузки страниц",

Ещё вопросы

Сообщество Overcoder
Наверх
Меню