feat(config): add database connection options and cache backend
Add connection pooling and Django cache using Database backend for session persistence to improve performance and reliability in production environments.
This commit is contained in:
2 files changed
+35
-3
No files matched your search
+27
-3
@@ -113,6 +113,7 @@ LOGIN_URL = "login"
|
||||
LOGIN_REDIRECT_URL = "dashboard"
|
||||
|
||||
SESSION_SAVE_EVERY_REQUEST = True
|
||||
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
|
||||
|
||||
# ── Internationalisation ──────────────────────────────────────────────────────
|
||||
|
||||
@@ -130,6 +131,19 @@ STATICFILES_DIRS = [BASE_DIR / "static/"]
|
||||
MEDIA_URL = "/media/"
|
||||
MEDIA_ROOT = BASE_DIR / "media"
|
||||
|
||||
# ── Cache ──────────────────────────────────────────────────────────────────
|
||||
|
||||
CACHES = {
|
||||
"default": {
|
||||
"BACKEND": "django.core.cache.backends.db.DatabaseCache",
|
||||
"LOCATION": "django_cache",
|
||||
}
|
||||
}
|
||||
|
||||
# ── Database ────────────────────────────────────────────────────────────────
|
||||
|
||||
CONN_MAX_AGE = env.int("CONN_MAX_AGE", default=600)
|
||||
|
||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||
|
||||
# ── Tailwind ──────────────────────────────────────────────────────────────────
|
||||
@@ -153,6 +167,14 @@ REST_FRAMEWORK = {
|
||||
"rest_framework.filters.OrderingFilter",
|
||||
),
|
||||
"DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema",
|
||||
"DEFAULT_THROTTLE_CLASSES": [
|
||||
"rest_framework.throttling.AnonRateThrottle",
|
||||
"rest_framework.throttling.UserRateThrottle",
|
||||
],
|
||||
"DEFAULT_THROTTLE_RATES": {
|
||||
"anon": "100/hour",
|
||||
"user": "1000/hour",
|
||||
},
|
||||
}
|
||||
|
||||
SIMPLE_JWT = {
|
||||
@@ -211,10 +233,12 @@ SPECTACULAR_SETTINGS = {
|
||||
|
||||
Q_CLUSTER = {
|
||||
"name": "project_management",
|
||||
"workers": 2,
|
||||
"timeout": 60, # seconds before a task is killed
|
||||
"retry": 120, # seconds before a failed task is retried (must be > timeout)
|
||||
"workers": env.int("Q_WORKERS", default=2),
|
||||
"timeout": 60,
|
||||
"retry": 120,
|
||||
"queue_limit": 50,
|
||||
"bulk": 10,
|
||||
"orm": "default",
|
||||
"poll": 2000,
|
||||
"recycle": 500,
|
||||
}
|
||||
@@ -18,6 +18,14 @@ DATABASES = {
|
||||
"PASSWORD": env("DB_PASSWORD"),
|
||||
"HOST": env("DB_HOST"),
|
||||
"PORT": env("DB_PORT", default="3306"),
|
||||
"CONN_MAX_AGE": 600,
|
||||
"OPTIONS": {
|
||||
"charset": "utf8mb4",
|
||||
"sql_mode": "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION",
|
||||
"connect_timeout": 10,
|
||||
"read_timeout": 30,
|
||||
"write_timeout": 30,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user