mirror of https://github.com/doccano/doccano.git
pythonannotation-tooldatasetsactive-learningtext-annotationdatasetnatural-language-processingdata-labelingmachine-learning
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.1 KiB
35 lines
1.1 KiB
import sys
|
|
import time
|
|
|
|
from django.core.management.base import BaseCommand
|
|
from django.db import connection
|
|
from django.db.utils import OperationalError
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Blocks until the database is available'
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument('--poll_seconds', type=float, default=3)
|
|
parser.add_argument('--max_retries', type=int, default=60)
|
|
|
|
def handle(self, *args, **options):
|
|
max_retries = options['max_retries']
|
|
poll_seconds = options['poll_seconds']
|
|
|
|
for retry in range(max_retries):
|
|
try:
|
|
connection.ensure_connection()
|
|
except OperationalError as ex:
|
|
self.stdout.write(
|
|
'Database unavailable on attempt {attempt}/{max_retries}:'
|
|
' {error}'.format(
|
|
attempt=retry + 1,
|
|
max_retries=max_retries,
|
|
error=ex))
|
|
time.sleep(poll_seconds)
|
|
else:
|
|
break
|
|
else:
|
|
self.stdout.write(self.style.ERROR('Database unavailable'))
|
|
sys.exit(1)
|