None
은 값이 없음을 나타내는 특별한 객체입니다. 이를 명시적으로 사용할 때, 값이 없다는 의도를 전달하려고 할 때 사용합니다.객체 처리: None
은 객체로 취급되지만, 이를 코루틴 처리에서 문제가 될 수 있는 예외로 간주해야 할 경우도 있습니다.
타입 선언: None
을 타입으로 선언하는 것은 드물며, 파이썬은 동적 타이핑을 사용하므로 명시적인 타입 선언이 없을 때 이를 처리하는 방식이 다를 수 있습니다.
파이썬은 모든 것이 객체로 취급되는 객체 지향 언어입니다. 예를 들어, 함수나 클래스 자체도 객체입니다.
파이썬에서는 객체를 선언하고 초기화하는 방식이 명시적이지 않더라도 자동으로 관리하는 경우가 많습니다.
클래스 상속은 파이썬에서 사용 가능하며, import
를 통한 모듈화와 상속은 동시에 존재할 수 있습니다.
파이썬의 상속: 파이썬에서도 상속은 자주 사용됩니다. super()
를 통해 부모 클래스의 메서드를 호출하거나, 오버라이드하여 자식 클래스에서 기능을 재정의할 수 있습니다.
순환 참조 문제: 모듈화된 구조에서 순환 참조를 방지하려면, 명확한 의존성 관리가 필요합니다.
파이썬은 에러 타입을 별도로 선언할 수 있으며, 커스텀 예외를 정의할 수 있습니다. 예를 들어, ValidationError
와 같은 오류를 선언하여 try-except 블록 내에서 처리할 수 있습니다.
순환 참조 오류는 일반적으로 재귀적 호출이나 모듈 의존성 문제에서 발생합니다.
코루틴: async
와 await
는 비동기 프로그래밍을 다루기 위한 도구이며, 모든 코루틴이 병렬 처리를 보장하는 것은 아닙니다. 비동기를 사용할 때도 완전한 병렬 처리는 아니므로, CPU 바운드 작업은 다른 방식으로 처리해야 할 수 있습니다.
sleep() 사용 지양: sleep()
은 비동기 함수에서 시간 지연을 유발하며, 병렬 처리의 의미를 상실하게 할 수 있습니다.
로그 레벨: INFO
는 일반적으로 성공적인 작업을 기록하지만, 중요하지 않은 정보는 기록하지 않는 것이 효율적입니다. ERROR
, WARNING
같은 중요한 로그는 반드시 기록해야 합니다.
Kafka 로그: 카프카 health check 로그와 토픽 생성 로그는 각각 별도의 로그로 다룰 수 있지만, 모두 모니터링 목적으로 전달하는 것이 좋습니다.
간단한 구현 찾기: 처음에는 간단한 방식으로 구현을 시작하고, 나중에 최적화하는 것이 좋습니다. 삽질은 필요한 학습의 일환일 수 있습니다.
AI 관제 로그: AI 관제 시스템에서는 구체적인 로그 형식 (예: JSON 형식, 텍스트 로그 등)을 사용하고, 로그 수준을 정의하여 처리합니다.