메인 콘텐츠로 건너뛰기
  • 재시도 가능한 요청의 경우, Weave는 첫 오류를 받은 후 1초 뒤에 재시도를 시작하고, 이후에는 시도 간 시간 간격을 최대 5분까지 두 배씩 늘립니다. 요청은 36시간이 지나면 타임아웃됩니다.
  • 예외를 발생시키는 대신, .call()은 예외를 캡처하여 call.exception에 저장합니다. 실행 중에 예외를 발생시켜야 한다면, 다음과 같이 __should_raise 매개변수를 설정하십시오:
    showLineNumbers
    # 이 코드는 예외를 발생시킵니다
    result, call = foo.call(__should_raise=True)
    
  • 전용 Weave 인스턴스는 다른 OpenTelemetry ingress URL을 사용합니다. 공식 엔드포인트 정보는 Send OpenTelemetry Traces를 참조하십시오.
  • Weave는 때때로 큰 트레이스 데이터 객체를 잘라냅니다. 이는 기본 트레이스 출력이 Weave가 직렬화 방법을 알지 못하는 raw 형식의 사용자 정의 Python 객체이기 때문에 발생합니다. 모든 트레이스 데이터를 반환하려면, 다음과 같이 문자열로 구성된 사전을 정의하십시오:
    import weave
    
    class MyObj:
        """큰 문자열 속성을 가진 객체입니다."""
        def __init__(self, x: int):
            self.x = x
    
        def __repr__(self):
            return f"MyObj(x={self.x})"
    
        def to_dict(self):
            return {"x": self.x}
    
    @weave.op()
    def make_my_obj():
        x = "a" * 10_000
        return MyObj(x)
    
    def main():
        weave.init("<entity/project>")
    
        # MyObj를 처리하는 트레이스 가능 연산 정의
        @weave.op()
        def process_obj(obj: MyObj) -> int:
            return len(obj.x)
    
        # 큰 MyObj 인스턴스를 생성하고 처리
        large_obj = make_my_obj()
        length = process_obj(large_obj)
        print(f"Length of x in MyObj: {length}")
        print("dict:", large_obj.to_dict())
    
    if __name__ == "__main__":
        main()