PgQueuer
PostgreSQL을 작업 대기열로 이용하는 파이썬 라이브러리
- PgQueuer는 PostgreSQL의 견고함을 활용한 Python용 미니멀/고성능 작업 큐 라이브러리
- 단순성과 효율성을 위해 설계되었으며, PostgreSQL의 LISTEN/NOTIFY를 사용하여 작업 큐를 손쉽게 관리함
Features
- 간단한 통합: PostgreSQL을 사용하는 기존 Python 애플리케이션과 쉽게 통합할 수 있음
- 효율적인 동시성 처리: PostgreSQL의 FOR UPDATE SKIP LOCKED를 사용하여 신뢰할 수 있고 동시적인 작업 처리를 가능하게 함
- 실시간 알림: LISTEN과 NOTIFY를 활용하여 작업 상태 변경에 대한 실시간 업데이트를 제공함
GN⁺의 정리
- PgQueuer는 PostgreSQL의 LISTEN/NOTIFY 기능을 활용하여 Python 애플리케이션에서 작업 큐를 효율적으로 관리할 수 있게 해줌.
- 간단한 통합과 효율적인 동시성 처리를 제공하여 기존 시스템에 쉽게 적용할 수 있음.
- 실시간 알림 기능을 통해 작업 상태를 즉시 확인할 수 있어, 작업 관리가 용이함.
- 비슷한 기능을 제공하는 다른 프로젝트로는 RQ, Celery 등이 있음.
Hacker News 의견
- Show HN: PgQueuer – Transform PostgreSQL into a Job Queue | Hacker News
- Graphile Worker 라이브러리와의 비교에 대한 질문
- PostgreSQL 기반 작업 큐 라이브러리들이 공통 스키마를 공유할 가능성에 대한 생각
- Elixir의 Oban 팬임
- 여러 언어에서 Sidekiq 호환 라이브러리가 있는 것처럼 PostgreSQL 기반 작업 큐도 유사한 접근이 유익할 것임
- Rust로 핵심 작업 큐 라이브러리를 개발하고 언어별 바인딩을 고려할 수 있음
- 다단계 파이프라인, 팬 아웃 및 축적을 수행하는 Postgres 작업 큐를 원함
- 구조적 관계형 데이터베이스가 이를 모델링하는 데 특히 적합함
- listen/notify의 최대 페이로드 크기 8k가 제한적임
- 스트리밍 테이블과 풍부한 타입 지원을 원함
- 예약된 작업 등을 지원함
- 디버깅을 위한 UI도 제공함
- update job_table set key=value where ... limit 1 구문 사용
- 간단하고 원자적임
- PostgreSQL은 update ... limit 구문을 허용하지 않음
- 많은 기능을 기본적으로 제공함
- 매우 흥미로운 도구임
- PostgreSQL의 LISTEN/NOTIFY를 사용함(옵션으로 끌 수 있고 폴링 사용 가능)
- 동기 및 비동기 작업, 주기적 작업, 재시도, 작업 잠금, 우선순위, 작업 취소/중단, Django 통합(옵션)을 지원함
- Procrastinate의 공동 유지보수자임