create_engine
только создает экземпляр, но не устанавливает соединение. Вам необходимо подключиться к базе данных, чтобы проверить, действительно ли соединение. Примерно так
try:
engine = create_engine('postgresql://{user}:{password}@{host}:{port}/{dbname}'.format(
dbname="db_name",
user="username",
host="internal_url.com",
port=1234,
password="PassWord"))
engine.connect()
return engine
except sqlalchemy.exc.OperationalError:
return create_engine('postgresql://{user}:{password}@{host}:{port}/{dbname}'.format(
dbname="db_name",
user="username",
host="external_url.com",
port=1234,
password="PassWord"))