Итак, у меня есть веб-приложение, работающее на Azure, и есть конечная точка API, которая будет обрабатывать длительный процесс (примерно час, который я могу сказать). Это нормально при запуске локального на визуальной студии, но когда он переходит на лазурь, он не запускается после запроса на 55 секунд.Azure Web Apps Длительный запрос процесса
У меня есть исследование, освещающее эти проблемы на каждой платформе, я изменяю шансы добавить эту строку кода в конечную точку.
System.Web.HttpContext.Current.Server.ScriptTimeout = 10000;
Так что теперь он может продлевать до таймаута, но все равно не обрабатывается через 3 минуты 50 секунд. В этот момент я узнал, что есть другая вещь, звоните Load Balancer. Все они говорят, что балансировка нагрузки Azure автоматически уничтожит весь запрос через 4 минуты. Поэтому я застрял на этом месте.
Так что я попробовал все это решение.
1.System.Web.HttpContext.Current.Server.ScriptTimeout = 10000; 2.System.Net.ServicePointManager.SetTcpKeepAlive (true, 30000, 30000); 3.Use Начать новую тему, чтобы обрабатывать длительный процесс и возвращать код состояния http клиенту, чтобы процесс был запущен. 4.Make long process as another async function
То, что я пытаюсь достичь, довольно прост, долгая функция процесса, которая может запускаться по задаче планировщика или вручную (вызов AJAX).
Любое предложение?
Я думаю, что вам нужно, чтобы сломать ваше описание на то, что происходит на конце API-клиента, а затем, что происходит на стороне сервера (или то, что вы хочу случиться) Мне любопытно увидеть более подробную информацию о подходе 3. где вы немедленно возвращаетесь - почему это не удается? –
@ G.Stoynev Конечная точка клиента будет вызовом AJAX, а первый проект - отправить запрос серверу, а затем вернуть сервер после завершения этого длинного процесса, в то время как серверный конец - это весь процесс процесса (проверьте, добавьте данные в база данных, но запись огромна). Для подхода 3 это всего лишь моя глупая идея, поэтому позволяет сказать, что клиент не хочет получать результат, когда процесс выполняется или нет, он получает ответ от сервера и отображает «Процесс запуска» для пользователя. Таким образом, поток будет работать на фоновом режиме, и нет никакого ответа на результат. Любое предложение? –
Как насчет того, инициирует ли клиент вызов Ajax и возвращает сервер HTTP статус, если запрос начал обрабатываться, но не был завершен. На стороне клиента обработчик onsuccess может запрашивать сервер до тех пор, пока он не получит статус http OK, который указывает, что он завершен. Клиент должен знать о синусоиде, чтобы однозначно идентифицировать операцию. –