Postgres Database private url, is it faster and how to use it?

nahascoHOBBY

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

nahascoHOBBY

a year ago

643c9962-5fa0-449c-82e0-67b30f66c552


a year ago

what environment variables do you currently use in your database configuration in the settings.py file?


nahascoHOBBY

a year ago

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.


nahascoHOBBY

a year ago

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


nahascoHOBBY

a year ago

Sure


nahascoHOBBY

a year ago

db_url = os.environ["DATABASE_URL"]
DATABASES = {"default": dj_database_url.parse(f"{db_url}")}

nahascoHOBBY

a year ago

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)}

nahascoHOBBY

a year ago

Right, no idea why I did it they way I did


a year ago

and what is the DATABASE_URL set to?


nahascoHOBBY

a year ago

The postgres DATABASE_URL variable from postgres


a year ago

it should be set to ${{Postgres.DATABASE_PRIVATE_URL}}


nahascoHOBBY

a year ago

i tried that but it caused connection issues


nahascoHOBBY

a year ago

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


nahascoHOBBY

a year ago

nixpacks


a year ago

can you add a 3 second sleep to your start command


nahascoHOBBY

a year ago

how can i do that?


a year ago

what's your current start command and where is it defined?


nahascoHOBBY

a year ago

{
    "$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
    }
}

nahascoHOBBY

a year ago

railway.json at home dir


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
    }
}

nahascoHOBBY

a year ago

ok ill test that


nahascoHOBBY

a year ago

thanks for helping so far..


nahascoHOBBY

a year ago

ok this error is weird


nahascoHOBBY

a year ago

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.


nahascoHOBBY

a year ago

I think the env var arent correct


nahascoHOBBY

a year ago

ill fix that


nahascoHOBBY

a year ago

ok it seems to be working well


a year ago

awesome


nahascoHOBBY

a year ago

why is that, may you explain?


a year ago

why the 3 second sleep is needed?


nahascoHOBBY

a year ago

yes, and why is it not needed in the normal db url


a year ago

the private network's dns resolver is not available for the first 3 or so seconds


nahascoHOBBY

a year ago

Oh


nahascoHOBBY

a year ago

would have never figured that on my own


nahascoHOBBY

a year ago

thank you! i really appreciate your help


a year ago

happy to help!


Postgres Database private url, is it faster and how to use it? - Railway Help Station