제공된 코드에서는 고루틴(go func() 문)을 활용하는 Find() 함수를 구현했습니다. findCicCode()를 사용한 비동기 데이터 검색. 고루틴에서 응답을 받기 위해 50밀리초의 시간 초과를 설정했습니다.
그러나 시간 초과 시 잠재적인 고루틴 누출이 우려됩니다. 또한 시간 초과가 발생하면 findCicCode()에 의해 수행된 HTTP 요청을 취소할 수 있기를 원합니다.
고루틴 누출 방지
고루틴 누출을 처리하려면 특정 범위에서 생성된 모든 고루틴이 범위가 끝나기 전에 종료되도록 하는 것이 중요합니다. 이 경우 시간 초과에 도달하면 select 문 내에서 goroutine을 취소하는 것이 중요합니다.
<code class="go">case <-time.After(50 * time.Millisecond): // Cancel the goroutine to prevent a potential leak close(ch) return "Request timed out", false</code>
HTTP 요청 취소
HTTP 요청을 취소하려면 고루틴에서는 Go 표준 라이브러리에서 제공하는 context.Context 및 context.CancelFunc를 활용할 수 있습니다.
<code class="go">// Create a context with a timeout of 50 milliseconds ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) defer cancel() // Execute the findCicCode() function within this context data, status := findCicCodeWithContext(ctx) // If the context is canceled (timeout), the HTTP requests will be aborted</code>
위 내용은 고루틴 누출을 방지하고 시간 초과 내에 HTTP 요청을 취소하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!