Files
Messenger/app/utils/redis_client.py
benya 85631b566a
All checks were successful
CI / test (push) Successful in 9m2s
Implement security hardening, notification pipeline, and CI test suite
Security hardening:

- Added IP/user rate limiting with Redis-backed counters and fail-open behavior.

- Added message anti-spam controls (per-chat rate + duplicate cooldown).

- Implemented refresh token rotation with JTI tracking and revoke support.

Notification pipeline:

- Added Celery app and async notification tasks for mention/offline delivery.

- Added Redis-based presence tracking and integrated it into realtime connect/disconnect.

- Added notification dispatch from message flow and notifications listing endpoint.

Quality gates and CI:

- Added pytest async integration tests for auth and chat/message lifecycle.

- Added pytest config, test fixtures, and GitHub Actions CI workflow.

- Fixed bcrypt/passlib compatibility by pinning bcrypt version.

- Documented worker and quality-gate commands in README.
2026-03-07 21:46:30 +03:00

20 lines
474 B
Python

from redis.asyncio import Redis
from app.config.settings import settings
_redis_client: Redis | None = None
def get_redis_client() -> Redis:
global _redis_client
if _redis_client is None:
_redis_client = Redis.from_url(settings.redis_url, decode_responses=True)
return _redis_client
async def close_redis_client() -> None:
global _redis_client
if _redis_client is not None:
await _redis_client.aclose()
_redis_client = None