코드 베이스에대한 위키 문서를 작성하는 토이 프로젝트를 만드는 중, 선형적으로 진행되는 작업에 대해 깔끔하게 처리해야할 경우를 발견했다.
작업은 다음 순서대로 이어진다.
1. 코드 베이스를 다운받는다.
2. 코드 베이스의 구조를 참고하여 작성할 위키 문서의 뼈대를 생성한다.
3. 만들어진 뼈대의 각 페이지들을 생성한다.
4. 전체 문서에 대한 인덱스 페이지를 생성한다.
5. 변경사항을 다시 업로드한다.
이전 스텝의 진행이 실패하면 멈춰야하며, 각 스텝은 이전 스텝의 출력 또는 맥락을 필요로 한다.
구현에 앞서, 어떻게 쓰고싶은지부터 정하면 늘 도움이 된다.
pipeline = (
Pipeline.with_context(context)
.register(Download)
.register(GenerateStructure)
.register(GeneratePages)
.register(GenerateIndex)
.register(Upload)
)
await pipeline.execute()
토이 프로젝트라 유지보수할 일은 없지만... 한 회사를 오래 다녀보니 유지보수를 생각하는 건 숨쉬듯 하게된다. 로직이 한 눈에 보일 수 있도록 구성했다.
이건 Pipeline 클래스의 구현이다. 제네릭 범벅이지만 덕분에 각 스텝의 Input, Output에 대한 타입을 명시할 수 있으며, 맥락에 주어지는 데이터의 타입도 명시적이라 각 스텝 구현이 아주 편하다. typing 모듈을 알게된 후로 파이썬 코딩이 즐겁다...
'프로그래밍 > Python' 카테고리의 다른 글
Gevent 알아보기 (0) | 2025.09.11 |
---|---|
Python 다중 할당(Multiple Assignment)을 이용한 변수 스왑 (0) | 2025.05.25 |
[해결방법] ImportError: libGL.so.1: cannot open shared object file: No such file or directory (0) | 2025.05.07 |
Pydantic Serialize시 오류 : Object of type <Enum> is not JSON serializable 해결방법 (0) | 2025.03.28 |
[FastAPI] 요청/응답 로깅하는 법 (0) | 2025.01.20 |