Curl은 응답을 반환하지 않으며 `wait=x초`를 기다리지 않습니다.

Curl은 응답을 반환하지 않으며 `wait=x초`를 기다리지 않습니다.

비동기 서비스를 호출 중인데 응답하는 데 약 80초가 걸립니다. 난 달린다:

curl -v -X POST https://hostname.com/service/v2/predict \
  -H 'x-api-key: somekey' \
  -H 'x-request-id: longfiles' \
  -H "Authorization: Bearer dfv651df8fdvd" \
  -H 'Prefer: respond-async, wait=200' \
  -F 'contentAnalyzerRequests={"inputtest": "this is a test"}
  -F infile=@/mnt/file/stream-01865caa-b2e0-40e4-b298-1502fcc65045.json

명령이 지정되었지만 wait=200약 60초 후에 컬이 반환됩니다. 서비스가 응답하는 데 약 80초가 걸리기 때문에 아무런 응답도 받지 못합니다(그러나 사용하면 응답을 받습니다 wait=1000). 왜?


컬 쿼리 출력 -v:

> Prefer: respond-async, wait=200
> Content-Length: 19271573
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------5873f0b92dd68547
>
< HTTP/1.1 100 Continue
< HTTP/1.1 202 Accepted
< Server: openresty
< Date: Fri, 07 Oct 2022 21:55:33 GMT
< Content-Length: 0
< Connection: keep-alive
< x-request-id: longfiles
< vary: Origin,Access-Control-Request-Method,Access-Control-Request-Headers
< location: https://hostname.com/service/v2/status/longfiles
< retry-after: 1
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Headers: Authorization,Content-Type,X-Api-Key,User-Agent,If-Modified-Since,Prefer,location,x-transaction-id,retry-after,cache-control
< Access-Control-Allow-Methods: GET, POST, PUT ,DELETE, OPTIONS,PATCH
< Access-Control-Expose-Headers: location, retry-after, x-request-id, x-transaction-id, cache-control
< Access-Control-Max-Age: 86400
<
* Connection #0 to host hostname.com left intact

답변1

HTTP 응답HTTP/1.1 202 Accepted 표현하다처리 요청이 승인되었지만 처리가 아직 완료되지 않았습니다.

핵심은 다음과 같습니다.

< location: https://hostname.com/service/v2/status/longfiles
< retry-after: 1

이는 출력이 다음과 같이 됨을 의미합니다.https://hostname.com/service/v2/status/longfiles처리가 완료되면. retry-after: 1즉, 초당 최대 1번까지 위치 보기를 다시 시도할 수 있습니다.

명령은 wait=200을 지정하지만 컬은 약 60초 후에 반환됩니다.

서비스에서 HTTP 202 Accepted응답을 보내는 데 60초의 제한 시간이 있을 수 있습니다.

통화 계획 흐름도:

여기에 이미지 설명을 입력하세요.

관련 정보