refactor(pipeline): migrate ws egress to Redis Pub/Sub and optimize A…#73
Conversation
…I translation pipeline
- Replace per-user AIOKafkaConsumer in WebSocket routers with Redis Pub/Sub subscriptions for room-specific audio egress (`pipeline:audio:{room_code}`) and captions (`pipeline:captions:{room_code}`).
- Refactor TranslationWorker to perform translations concurrently with asyncio.gather, and add per-language error resilience.
- Add client-side buffering to STTWorker with a periodic stale buffer sweeping/cleanup mechanism.
- Implement persistent HTTP connections (connection pooling) across DeepL, OpenAI TTS, and Voice.ai clients via a singleton client pattern.
- Scale pipeline Kafka topics to 3 partitions for horizontal worker scaling.
- Mock Redis client and Connection Manager in unit tests, fix STT buffering assertions, and resolve all 205 test failures.
- Add comprehensive docs/frontend-angular-integration.md guide.
- Format all files and resolve Ruff lints.
Signed-off-by: aniebietafia <aniebietafia87@gmail.com>
|
Warning Review limit reached
Your plan currently allows 1 review/hour. Refill in 4 minutes and 57 seconds. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more review capacity refills, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than trial, open-source, and free plans. In all cases, review capacity refills continuously over time. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (23)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…I translation pipeline
pipeline:audio:{room_code}) and captions (pipeline:captions:{room_code}).