Безопасно ли заново создавать объект SQLAlchemy во время работы сервера? - PullRequest
0 голосов
/ 30 сентября 2018

Наше приложение использует колбу + Gunicorn.Теперь мы хотим, чтобы он мог перезагружать конфигурацию БД во время ее работы, что означает, что он может переключаться на новый БД без перезапуска процесса.С помощью центра конфигурации мы можем отправить конфигурацию во время выполнения, но как я могу повторно запустить глобальную базу данных varibale?

db = SQLAlchemy()
def create_app():
    app = Flask(__name__)
    app.config.from_object(dynamic_config)
    db.init_app(app)

И предположить через некоторое время.Мы отправляем новый конфиг, как db может быть инициализирован с новым конфигом?Или безопасно просто заменить его новым экземпляром SQLAlchemy ()?Как это сделать:

from models import set_db # which will set global db to new instance
from app import app
def callback(odl, new):  
    new_db = SQLAlchemy()
    # re-construct config with old, and new
    # now app.config is updated
    new_db.init_app(app)
    set_db(new_db)

Это нормально делать это?Что касается меня, это вызовет что-то вроде безопасности потоков и может разрушить транзакцию.

Помогите мне с этим, большое спасибо

1 Ответ

0 голосов
/ 02 октября 2018

На вашем месте я бы использовал SQLALCHEMY_BINDS config или другие экземпляры БД с разными конфигами вместо того, чтобы каждый раз менять конфигурацию.и я думаю, что не стоит менять структуру БД с помощью приложения (если вы это делаете)

...