Issue Point
•
Celery의 멀티프로세싱과 asyncio 이벤트 루프 간 충돌로 인한 런타임 에러 발생
•
순차적으로만 처리되는 구조에서 asyncio 사용은 불필요한 복잡도 추가
•
WebSocket 메시지 순서 보장을 위해 완전히 순차 처리 중 → 동시성에 대한 이점이 딱히 없음
Detail
backend-gookhwe의 속기록 수집 시스템을 asyncio 기반에서 동기(synchronous) 방식으로 리팩토링
•
src/collector.py: websockets → websocket-client로 변경
•
src/database.py: aiomysql → pymysql로 변경
•
src/tasks.py: asyncio.run() 제거, 동기 함수로 변경
•
src/summarizes.py: 루프 내에서 한 번 씩 순차 호출이라 동기로 변경(동시 요약 없음)
•
src/monitor.py: 내부 데이터 모니터링을 동기 방식으로 변경(추가 고려 해보기)
1.
근본적 문제 해결: Celery fork 후 이벤트 루프 충돌 문제가 완전히 사라짐(임시 방편인 engine.dispose() 불필요)
2.
코드 단순화: async/await 제거로 코드 가독성 및 유지보수성 향상
3.
디버깅 용이성: 동기 코드는 스택 트레이스가 명확하고 디버깅이 쉬움
4.
순서 보장: 속기록 메시지 순서가 자연스럽게 보장됨 (명시적 제어 불필요)
5.
안정성 향상: 성숙한 동기 라이브러리 사용으로 예상치 못한 이벤트 루프 관련 버그 방지
Task
•
tasks.py
◦
perform_meeting_summary
◦
_perform_meeting_summary_async
