Единственный способ проверить это состоит в том, чтобы получить или записать профилировщику и рычагу в события JIT, необходимо также удостовериться, Встроив, не выключен, как это по умолчанию при профилировании.
Предполагая, что вы можете настроить тайм-ауты HTTP, используя любую выбранную вами структуру, тогда вы можете запросить через GET и просто зависнуть на 5 минут.
Однако может оказаться более гибким инициировать выполнение с помощью POST, получить квитанцию (номер / идентификатор, что угодно), а затем выполнить GET, используя эти 5 минут спустя (и, возможно, повторить попытку, учитывая, что ваша процедура не займет ровно 5 минут каждый раз). Если запрос все еще выполняется, верните соответствующий код ошибки HTTP (возможно, 404, но что бы вы вернули для GET с несуществующей квитанцией?) Или верните результаты, если они доступны.
Если вы контролируете оба конца , то вы можете делать все, что захотите. Например, браузеры, как правило, запускают HTTP-запросы с заголовками «закрытие соединения», поэтому у вас остается меньше вариантов; -)
Имейте в виду, что если у вас есть несколько NAT / брандмауэров между ними, у вас может быть несколько разорванных соединений, если они неактивен в течение некоторого времени.
Могу я предложить зарегистрировать процедуру "обратного вызова"? Клиент отправляет серверу запрос с «конечной точкой обратного вызова», получает «билет». Как только сервер завершает работу, он "выполняет обратный вызов" клиента ... или клиент может проверить статус запроса по идентификатору билета.
Это один из подходов.
Создайте новый запрос для выполнения ProcessXYZ
POST /ProcessXYZRequests
201-Created
Location: /ProcessXYZRequest/987
Если вы хотите увидеть текущий статус запроса:
GET /ProcessXYZRequest/987
<ProcessXYZRequest Id="987">
<Status>In progress</Status>
<Cancel method="DELETE" href="/ProcessXYZRequest/987"/>
</ProcessXYZRequest>
когда запрос будет завершен, вы должны см. что-то вроде
GET /ProcessXYZRequest/987
<ProcessXYZRequest>
<Status>Completed</Status>
<Results href="/ProcessXYZRequest/Results"/>
</ProcessXYZRequest>
Используя этот подход, вы легко можете представить, что дадут следующие запросы
GET /ProcessXYZRequests/Pending
GET /ProcessXYZRequests/Completed
GET /ProcessXYZRequests/Failed
GET /ProcessXYZRequests/Today