How to know when your Postgres Service is ready


By:

February 13, 2017

I am sure a lot of us have found ourselves in a situation where we need to wait for a service to be ready. I don’t mean the VM or container is running. I mean the service is up and running and fully functional.

Postgres provides an easy to use command called pg_isready that allows us to know exactly when postgres is ready to accept connections.

pg_isready is a utility for checking the connection status of a PostgreSQL database server. The exit status specifies the result of the connection check. (taken from https://www.postgresql.org/docs/9.6/static/app-pg-isready.html)

Example Script

Here is a simple shell script where we poll the postgres service every 2 seconds until it is ready to accept connections.

#!/bin/sh
pg_uri="postgres://postgres:postgres@postgrest-host:5432/shield"

# make sure pg is ready to accept connections
until pg_isready -h postgres-host -p 5432 -U postgres  
do  
  echo "Waiting for postgres at: $pg_uri"
  sleep 2;
done

# Now able to connect to postgres