From 8b5c778d29cfc0c924c216c830df06c099ce994b Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Sun, 3 Apr 2016 00:24:04 +0200 Subject: [PATCH] addd wait-for-db command --- app/deploy/app.sh | 8 +++--- app/wait.py | 19 ------------- telemeta/management/commands/wait-for-db.py | 30 +++++++++++++++++++++ 3 files changed, 33 insertions(+), 24 deletions(-) delete mode 100644 app/wait.py create mode 100644 telemeta/management/commands/wait-for-db.py diff --git a/app/deploy/app.sh b/app/deploy/app.sh index ddfba3f7..9593c324 100644 --- a/app/deploy/app.sh +++ b/app/deploy/app.sh @@ -21,13 +21,11 @@ gid='www-data' # stating apps # pip install django-angular -# waiting for other services +# waiting for other network services sh $app/deploy/wait.sh -# waiting for available database -python $app/wait.py - -# django init +# django setup +python $manage wait-for-db python $manage syncdb --noinput python $manage migrate --noinput python $manage bower_install -- --allow-root diff --git a/app/wait.py b/app/wait.py deleted file mode 100644 index a1dc25dd..00000000 --- a/app/wait.py +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/python - -import os, time -from django.core.management import call_command - -up = False -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sandbox.settings") - -i = 0 -while not up: - try: - call_command('syncdb', interactive=False) - up = True - except: - i += 1 - print 'initialization...' - if i > 10: - raise - time.sleep(1) diff --git a/telemeta/management/commands/wait-for-db.py b/telemeta/management/commands/wait-for-db.py new file mode 100644 index 00000000..f55207c9 --- /dev/null +++ b/telemeta/management/commands/wait-for-db.py @@ -0,0 +1,30 @@ +import os, time + +from optparse import make_option +from django.conf import settings +from django.core.management.base import BaseCommand, CommandError +from django.db import connections + + +class Command(BaseCommand): + help = "wait for default DB connection" + + db_name = 'default' + N = 10 + + def handle(self, *args, **options): + i = 0 + connected = False + db_conn = connections[self.db_name] + while not connected: + try: + c = db_conn.cursor() + connected = True + except: + print('error connecting to DB...') + if i > self.N: + print('...exiting') + raise + print('...retrying') + i += 1 + time.sleep(1) -- 2.39.5