컨트롤러, 서비스, 리포지토리 등으로 계층화된 백엔드 API를 개발 중입니다.
이 레이어의 각 메소드는 context.Context
요청 컨텍스트를 포함하는 첫 번째 매개변수로 를 사용합니다. 어떤 메소드에서든 다양한 요청 관련 데이터(correlationID 등)에 접근할 수 있어 편리합니다.
모든 요청 컨텍스트 에는 아래 TimeoutMiddleware
에 의해 설정된 시간 제한이 있습니다.
요청 컨텍스트 시간이 초과되면 진행 중인 모든 작업을 정상적으로 중지하는 것이 아이디어입니다. 컨텍스트와 동시성에 대한 이해(거의 없음)를 바탕으로 다음 도우미 함수를 만들었습니다.
으아아아이론적으로 모든 작업을 가능한 한 빨리 중지하려면 애플리케이션의 모든 메서드 시작 에서 다음과 같이
이 함수 를 호출해야 합니다.
으아아아
Query
、QueryRow
、Exec
또한 데이터베이스에 액세스하는 저장소에서 대부분의 기능에는
컨텍스트internal_server_error
가 필요하다는 것을 알고 있습니다.
그래서 위 줄에서 오류가 발생할 때마다 HandleContextCancel
函数看起来有点多余,您对此有何看法?
您不需要 HandleContextCancel
를 반환하고 다음과 같은 오류 메시지를 표시하는 대신 오류가 컨텍스트 취소로 인한 것이 아닌지 확인해야 합니다.
HandleContextCancel
함수를 사용하는 것이 약간 중복되는 것 같습니다. 이에 대해 어떻게 생각하시나요? Unwrap() error
HandleContextCancel
함수가 필요하지 않으며 간단히 다음을 수행하면 됩니다. 🎜
으아아아
🎜다른 오류 처리 함수가 이 오류를 올바르게 래핑하는 경우(예: 🎜 메서드 구현) 오류에 시간 초과/취소 오류가 포함되어 있는지 최상위 수준에서 확인하고 반환하려는 오류 유형을 결정할 수 있습니다. 모든 레벨에 대해 이 작업을 수행할 필요는 없습니다 🎜.위 내용은 레이어 간 컨텍스트 취소 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!