diff --git a/core/admin/migrations/env.py b/core/admin/migrations/env.py index 45938160..bb43fc55 100755 --- a/core/admin/migrations/env.py +++ b/core/admin/migrations/env.py @@ -3,6 +3,8 @@ from alembic import context from sqlalchemy import engine_from_config, pool from logging.config import fileConfig import logging +import tenacity +from tenacity import retry # this is the Alembic Config object, which provides # access to the values within the .ini file in use. @@ -68,8 +70,8 @@ def run_migrations_online(): engine = engine_from_config(config.get_section(config.config_ini_section), prefix='sqlalchemy.', poolclass=pool.NullPool) + connection = retry(engine.connect, stop=tenacity.stop_after_attempt(100), wait=tenacity.wait_random(min=2, max=5))() - connection = engine.connect() context.configure(connection=connection, target_metadata=target_metadata, process_revision_directives=process_revision_directives, diff --git a/core/admin/requirements-prod.txt b/core/admin/requirements-prod.txt index 0b9489cc..ba206f12 100644 --- a/core/admin/requirements-prod.txt +++ b/core/admin/requirements-prod.txt @@ -46,3 +46,4 @@ WTForms==2.2.1 WTForms-Components==0.10.3 psycopg2 sqlalchemy-citext +tenacity diff --git a/core/admin/requirements.txt b/core/admin/requirements.txt index 95a65bbe..70372dee 100644 --- a/core/admin/requirements.txt +++ b/core/admin/requirements.txt @@ -17,3 +17,4 @@ PyYAML PyOpenSSL dnspython bcrypt +tenacity