a year ago
I have a Django rest framework setup with postgress db and it seems the connection is slow.
I noticed there is a database private url and i wonder if this is a faster connection. If it is how can I configure it in my project?
I read the doc article about private networking but I am new here and couldnt really understand how to do it.
Any help is greatly appreciated.
Thanks.
0 Replies
a year ago
what environment variables do you currently use in your database configuration in the settings.py file?
I previously used to parse the DATABASE URL thats in my env variables. But I tried today to specify the fields such as PG_HOST, user, password, etc.. but I received the same results.
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": os.environ["PGDATABASE"],
"USER": os.environ["PGUSER"],
"HOST": os.environ["PGHOST"],
"PASSWORD": os.environ["PGPASSWORD"],
"PORT": os.environ["PGPORT"],
}
}
a year ago
can you show me the code you used to parse those options from the url environment variable, if we can get that method working I think it would be the easiest
db_url = os.environ["DATABASE_URL"]
DATABASES = {"default": dj_database_url.parse(f"{db_url}")}
db_url = os.environ["DATABASE_URL"]
DATABASES = {"default": dj_database_url.parse(f"{db_url}")}
a year ago
why not just
db_url = os.environ["DATABASE_URL"]
DATABASES = {"default": dj_database_url.parse(db_url)}
a year ago
and what is the DATABASE_URL
set to?
a year ago
it should be set to ${{Postgres.DATABASE_PRIVATE_URL}}
django.db.utils.OperationalError: could not translate host name "postgres-9l4v.railway.internal" to address: Name or service not known
a year ago
okay is this a nixpacks or a dockerfile deployment
a year ago
can you add a 3 second sleep to your start command
a year ago
what's your current start command and where is it defined?
{
"$schema": "https://railway.app/railway.schema.json",
"build": {
"builder": "NIXPACKS"
},
"deploy": {
"startCommand": "python manage.py migrate && python manage.py collectstatic --noinput && gunicorn --timeout 500 tibian_backend.wsgi",
"restartPolicyType": "NEVER",
"restartPolicyMaxRetries": 10
}
}
a year ago
change to
{
"$schema": "https://railway.app/railway.schema.json",
"build": {
"builder": "NIXPACKS"
},
"deploy": {
"startCommand": "sleep 3 && python manage.py migrate && python manage.py collectstatic --noinput && gunicorn --timeout 500 tibian_backend.wsgi",
"restartPolicyType": "NEVER",
"restartPolicyMaxRetries": 10
}
}
django.core.exceptions.ImproperlyConfigured: The database name 'railwaypostgresql://postgres:FB-2C-FgdaFF21FGDa5fEBFE43-ecC-D@postgres-9l4v.railway.internal:5432/railway' (105 characters) is longer than PostgreSQL's limit of 63 characters. Supply a shorter NAME in settings.DATABASES.
a year ago
awesome
a year ago
why the 3 second sleep is needed?
a year ago
the private network's dns resolver is not available for the first 3 or so seconds
a year ago
happy to help!