글로벌 사인 패키지에서 go mongo-driver로 코드를 마이그레이션할 때 적절한 컨텍스트를 이해하십시오. context.TODO() 및 context.Background()를 사용하는 것이 중요합니다.
Background()
문서에 따르면 context.Background()는 비를 반환합니다. -nil, 다음 특성을 갖는 빈 컨텍스트:
일반적으로 사용됩니다. 주요 기능, 초기화 및 테스트에서. 의미 있는 컨텍스트를 사용할 수 없는 경우 context.Background()는 대체를 제공합니다.
TODO()
context.TODO()도 nil이 아닌 빈 값을 반환합니다. 문맥. 그러나 특히 어떤 컨텍스트를 사용할지 불분명하거나 컨텍스트를 아직 사용할 수 없는 경우에 해당 용도로 사용됩니다. context.TODO()를 사용하면 컨텍스트가 필요하지만 현재 특정 컨텍스트가 없음을 명시적으로 문서화할 수 있습니다.
모범 사례
사용 예
다음 시나리오를 고려하세요. HTTP 핸들러는 특정 시간 제한 내에 MongoDB 쿼리를 실행해야 합니다.
ctx, cancel := context.WithTimeout(r.Context(), 6 * time.Second) defer cancel() // ctx automatically times out after 6 seconds curs, err := c.Find(ctx, bson.M{"some": "filter"})
이 예에서 context.WithTimeout()은 요청 컨텍스트(r.Context())에서 파생되는 새 컨텍스트를 생성합니다. . MongoDB 작업이 6초를 초과하면 컨텍스트 시간이 초과되어 쿼리를 취소해야 한다는 신호를 보냅니다.
결론
context.TODO()와 context 중에서 선택합니다. Background()는 특정 사용 시나리오를 이해하고 다운스트림 기능에 의미 있고 적절한 컨텍스트를 제공하는지 확인하는 문제입니다.
위 내용은 Context.Background() 대 Context.TODO(): 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!