[WEB-4533] feat: read replica functionality (#7453)

* feat: read replica functionality

* fix: set use_read_replica to false

* chore: add use_read_replica to external APIs

* chore: remove use_read_replica on read endpoints

* chore: remove md files

* Updated all the necessary endpoints to use read replica

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
This commit is contained in:
Sangeetha 2025-07-28 17:41:02 +05:30 committed by GitHub
parent b1162395ed
commit 84879ee3bd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 884 additions and 6 deletions

View file

@ -149,6 +149,29 @@ else:
}
}
if os.environ.get("ENABLE_READ_REPLICA", "0") == "1":
if bool(os.environ.get("DATABASE_READ_REPLICA_URL")):
# Parse database configuration from $DATABASE_URL
DATABASES["replica"] = dj_database_url.parse(
os.environ.get("DATABASE_READ_REPLICA_URL")
)
else:
DATABASES["replica"] = {
"ENGINE": "django.db.backends.postgresql",
"NAME": os.environ.get("POSTGRES_READ_REPLICA_DB"),
"USER": os.environ.get("POSTGRES_READ_REPLICA_USER"),
"PASSWORD": os.environ.get("POSTGRES_READ_REPLICA_PASSWORD"),
"HOST": os.environ.get("POSTGRES_READ_REPLICA_HOST"),
"PORT": os.environ.get("POSTGRES_READ_REPLICA_PORT", "5432"),
}
# Database Routers
DATABASE_ROUTERS = ["plane.utils.core.dbrouters.ReadReplicaRouter"]
# Add middleware at the end for read replica routing
MIDDLEWARE.append("plane.middleware.db_routing.ReadReplicaRoutingMiddleware")
# Redis Config
REDIS_URL = os.environ.get("REDIS_URL")
REDIS_SSL = REDIS_URL and "rediss" in REDIS_URL