django wait for database
Step 1: Install Required Packages
pip install django psycopg2
Step 2: Configure Database Settings in settings.py
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'your_database_name',
'USER': 'your_database_user',
'PASSWORD': 'your_database_password',
'HOST': 'your_database_host',
'PORT': 'your_database_port',
}
}
Step 3: Create a Custom Database Wrapper
# database.py in your Django app
import time
from django.db.backends.postgresql.base import DatabaseWrapper
class WaitDatabaseWrapper(DatabaseWrapper):
def get_new_connection(self, conn_params):
connection = super().get_new_connection(conn_params)
while True:
try:
with connection.cursor() as cursor:
cursor.execute("SELECT 1")
break
except Exception:
time.sleep(1)
return connection
Step 4: Use Custom Database Wrapper in settings.py
# settings.py
DATABASES = {
'default': {
'ENGINE': 'your_project_name.database.WaitDatabaseWrapper',
'NAME': 'your_database_name',
'USER': 'your_database_user',
'PASSWORD': 'your_database_password',
'HOST': 'your_database_host',
'PORT': 'your_database_port',
}
}
Step 5: Apply Migrations
python manage.py migrate
Step 6: Run Django Development Server
python manage.py runserver