> 백엔드 개발 > Golang > Context.TODO() 대 Context.Background(): MongoDB 드라이버에서 어떤 컨텍스트를 사용해야 합니까?

Context.TODO() 대 Context.Background(): MongoDB 드라이버에서 어떤 컨텍스트를 사용해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-11-08 10:43:01
원래의
1043명이 탐색했습니다.

Context.TODO() vs. Context.Background(): Which Context Should You Use in a MongoDB Driver?

Context.TODO() 또는 Context.Background(): 올바른 컨텍스트 선택

코드를 mongo-driver로 마이그레이션할 때 결정 context.TODO()와 context.Background() 사이가 혼란스러울 수 있습니다. 둘 다 빈 컨텍스트를 반환하지만 용도를 이해하는 것이 중요합니다.

Context.Background()

context.Background()는 취소할 수 없는 비어 있는 컨텍스트를 생성합니다. 가치나 기한이 없습니다. 일반적으로 초기화, 테스트 및 컨텍스트 매개변수를 사용할 수 없는 기본 기능 내에서 최상위 컨텍스트로 사용됩니다.

Context.TODO()

context .TODO()도 빈 컨텍스트를 생성하지만 어떤 컨텍스트를 사용해야 할지 확실하지 않은 경우 컨텍스트 부족을 문서화하는 데 도움이 됩니다. 적절한 컨텍스트를 사용할 수 있을 때까지 자리 표시자 역할을 할 수 있습니다.

Context.TODO()를 사용해야 하는 경우

context.TODO()의 주요 사용 사례는 다음과 같습니다. 아직 사용할 수 있는 컨텍스트가 없거나 어떤 컨텍스트를 사용해야 할지 확실하지 않은 경우입니다. 이 기능을 활용하면 이 상황을 정적 분석 도구 및 IDE에 명시적으로 알릴 수 있습니다.

외부 소스의 컨텍스트 사용

HTTP와 같은 외부 소스에서 컨텍스트를 수신하는 경우 요청이 있는 경우 MongoDB 드라이버를 사용한 후속 작업에 해당 컨텍스트를 사용하는 것이 좋습니다. 이를 통해 조기 종료 중에 요청 컨텍스트를 취소하여 서버 리소스를 절약할 수 있습니다.

특정 사용 사례에 대한 컨텍스트 파생

특정 시간 초과 또는 기한이 있는 새 컨텍스트를 파생할 수 있습니다. 필요한 경우 context.TODO() 또는 context.Background()에서. 예를 들어, 특정 MongoDB 쿼리에 대해 6초 시간 초과가 필요한 경우:

ctx, cancel := context.WithTimeout(r.Context(), 6 * time.Second)
defer cancel()
curs, err := c.Find(ctx, bson.M{"some": "filter"})
로그인 후 복사

결론

context.TODO()와 context 사용 간의 결정 .Background()는 특정 컨텍스트 가용성에 따라 다릅니다. 취소 및 시간 초과를 효과적으로 처리하려면 상황을 고려하고 적절한 컨텍스트를 사용하는 것이 중요합니다.

위 내용은 Context.TODO() 대 Context.Background(): MongoDB 드라이버에서 어떤 컨텍스트를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿