Go HTTP 클라이언트 POST 요청을 조기에 중단
Go에서 http.Client 라이브러리는 일반적으로 클라이언트 측 HTTP 요청에 사용됩니다. 장기 폴링 작업을 수행할 때 사용자 작업이나 기타 이벤트로 인해 요청을 조기에 중단해야 할 수도 있습니다.
클라이언트 측 요청을 선점하거나 취소하는 표준 접근 방식은 다음을 사용하여 시간 초과를 설정하는 것입니다. http.교통. 그러나 이 메커니즘은 사용자가 시작한 작업이 아닌 시간 초과에 따른 취소만 허용합니다.
더 유연한 솔루션은 http.Request.WithContext 함수를 활용하는 것입니다. 이 함수를 사용하면 요청을 context.Context와 연결할 수 있습니다. 그런 다음 컨텍스트를 취소하거나 기한을 설정하여 언제든지 취소할 수 있습니다.
이 접근 방식을 구현하려면:
예:
import ( "context" "net/http" ) // Create a context with a user-specified timeout or cancellation. ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() // Remember to cancel the context when done. // Create an HTTP request. req, err := http.NewRequest("POST", "http://example.com", nil) if err != nil { // Handle error. } // Add headers or other request-specific information. // Associate the request with the context. req = req.WithContext(ctx) // Perform the request. resp, err := client.Do(req) if err != nil { // Handle error. } // ... // Handle the response as usual.
이 접근 방식을 사용하면 컨텍스트가 취소되거나 기한이 지나면 요청이 자동으로 중단됩니다. 만료됩니다.
위 내용은 완료되기 전에 Go HTTP 클라이언트 POST 요청을 중단하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!