diff --git a/api/app/settings/common.py b/api/app/settings/common.py index 43027a9c2da9..b27541e18c02 100644 --- a/api/app/settings/common.py +++ b/api/app/settings/common.py @@ -16,7 +16,7 @@ import warnings from datetime import datetime, time, timedelta -import dj_database_url # type: ignore[import-untyped] +import dj_database_url import django_stubs_ext import prometheus_client import pytz @@ -168,7 +168,7 @@ SITE_ID = 1 db_conn_max_age = env.int("DJANGO_DB_CONN_MAX_AGE", 60) -DJANGO_DB_CONN_MAX_AGE = None if db_conn_max_age == -1 else db_conn_max_age +DJANGO_DB_CONN_MAX_AGE = 0 if db_conn_max_age == -1 else db_conn_max_age DATABASE_ROUTERS = ["app.routers.PrimaryReplicaRouter"] NUM_DB_REPLICAS = 0 @@ -261,14 +261,14 @@ # Task processor database — OPTIONALLY SEPARATED TASK_PROCESSOR_DATABASE_URL = env("TASK_PROCESSOR_DATABASE_URL", default=None) -TASK_PROCESSOR_DATABASE_USER = env("TASK_PROCESSOR_DATABASE_USER", default=None) +TASK_PROCESSOR_DATABASE_USER = env("TASK_PROCESSOR_DATABASE_USER", default="") TASK_PROCESSOR_DATABASE_PASSWORD = env( "TASK_PROCESSOR_DATABASE_PASSWORD", - default=None, + default="", ) -TASK_PROCESSOR_DATABASE_HOST = env("TASK_PROCESSOR_DATABASE_HOST", default=None) -TASK_PROCESSOR_DATABASE_PORT = env("TASK_PROCESSOR_DATABASE_PORT", default=None) -TASK_PROCESSOR_DATABASE_NAME = env("TASK_PROCESSOR_DATABASE_NAME", default=None) +TASK_PROCESSOR_DATABASE_HOST = env("TASK_PROCESSOR_DATABASE_HOST", default="") +TASK_PROCESSOR_DATABASE_PORT = env("TASK_PROCESSOR_DATABASE_PORT", default="") +TASK_PROCESSOR_DATABASE_NAME = env("TASK_PROCESSOR_DATABASE_NAME", default="") if TASK_PROCESSOR_DATABASE_URL or TASK_PROCESSOR_DATABASE_NAME: # pragma: no cover if TASK_PROCESSOR_DATABASE_URL: diff --git a/api/poetry.lock b/api/poetry.lock index bdd5c7de9813..e0f6835f6a0b 100644 --- a/api/poetry.lock +++ b/api/poetry.lock @@ -1192,16 +1192,19 @@ files = [ [[package]] name = "dj-database-url" -version = "0.5.0" +version = "3.0.1" description = "Use Database URLs in your Django Application." optional = false python-versions = "*" groups = ["main"] files = [ - {file = "dj-database-url-0.5.0.tar.gz", hash = "sha256:4aeaeb1f573c74835b0686a2b46b85990571159ffc21aa57ecd4d1e1cb334163"}, - {file = "dj_database_url-0.5.0-py2.py3-none-any.whl", hash = "sha256:851785365761ebe4994a921b433062309eb882fedd318e1b0fcecc607ed02da9"}, + {file = "dj_database_url-3.0.1-py3-none-any.whl", hash = "sha256:43950018e1eeea486bf11136384aec0fe55b29fe6fd8a44553231b85661d9383"}, + {file = "dj_database_url-3.0.1.tar.gz", hash = "sha256:8994961efb888fc6bf8c41550870c91f6f7691ca751888ebaa71442b7f84eff8"}, ] +[package.dependencies] +Django = ">=4.2" + [[package]] name = "django" version = "4.2.22" @@ -1256,6 +1259,18 @@ django = ">=3.2" django-ipware = ">=3" setuptools = "*" +[[package]] +name = "django-cockroachdb" +version = "4.2" +description = "Django backend for CockroachDB" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "django-cockroachdb-4.2.tar.gz", hash = "sha256:f58d6fadf9b7e9d83309f842d0c8ea9b17d85405069f2b66982058a7ba3ba7d3"}, + {file = "django_cockroachdb-4.2-py3-none-any.whl", hash = "sha256:04fb842d2462a10108552f56683d8fe0e99c60b85e35bd5ad08250251807868e"}, +] + [[package]] name = "django-cors-headers" version = "3.5.0" @@ -5404,4 +5419,4 @@ files = [ [metadata] lock-version = "2.1" python-versions = ">3.11,<3.13" -content-hash = "6d970c48da584e098b1bca7a97e4db1f98ae710a56d0e051437522dc0512f8d4" +content-hash = "a2a6709fbd9d92160e6d9bbd9542ac9a1a2a0c944cb7d05f8ddd4cfba438bb63" diff --git a/api/pyproject.toml b/api/pyproject.toml index ce92f70de0ec..06165009484f 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -112,7 +112,7 @@ pyparsing = "~2.4.7" requests = "~2.32.4" six = "~1.16.0" whitenoise = "~6.0.0" -dj-database-url = "~0.5.0" +dj-database-url = "~3.0.1" drf-nested-routers = "~0.92.1" shortuuid = "~1.0.1" sendgrid-django = "~4.2.0" @@ -166,6 +166,7 @@ tzdata = "^2024.1" djangorestframework-simplejwt = "^5.3.1" structlog = "^24.4.0" prometheus-client = "^0.21.1" +django_cockroachdb = "~4.2" [tool.poetry.group.auth-controller] optional = true diff --git a/docs/docs/deployment/hosting/kubernetes.md b/docs/docs/deployment/hosting/kubernetes.md index 6a07f0396a52..b5c2a08aa953 100644 --- a/docs/docs/deployment/hosting/kubernetes.md +++ b/docs/docs/deployment/hosting/kubernetes.md @@ -385,8 +385,8 @@ The following table lists the configurable parameters of the chart and their def | `postgresqlUsername` | | `postgres` | | `postgresqlPassword` | | `flagsmith` | | `databaseExternal.enabled` | use an external database. Specify database URL, or all parts. | `false` | -| `databaseExternal.url` | See [schema](https://github.com/kennethreitz/dj-database-url#url-schema). | | -| `databaseExternal.type` | Note: Only postgres supported by default images. | `postgres` | +| `databaseExternal.url` | See [schema](https://github.com/jazzband/dj-database-url#url-schema). | | +| `databaseExternal.type` | Note: Only Postgres is fully supported by default images. [Other databases](https://github.com/jazzband/dj-database-url#supported-databases) not guaranteed to work. | `postgres` | | `databaseExternal.port` | | 5432 | | `databaseExternal.database` | Name of the database within the server | | | `databaseExternal.username` | | |