Я использую пакет узлов 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, но все же запросы медленно возвращаются.
Кто-нибудь знает, как я могу решить эту или любую дополнительную отладку, которую я могу сделать?
Похоже, что это в основном проблема с хром и способ, которым хром использует предварительные соединения
https://hackernoon.com/chrome-preconnect-breaks-singly-threaded-servers-95944be16400
Способ решения этой проблемы - установить сервер WSGI для разрезания потоков. Я поднял вопрос с командой, поскольку в настоящее время это невозможно сделать, если вы используете serverless-wsgi
.
В процессе работы вы можете отключить функцию предварительного соединения в хроме. Перейдите в настройки/перейти/Конфиденциальность и безопасность и отключите "Использовать службу прогнозирования для более быстрой загрузки страниц",