Как установить `lock_timeout` для PostgreSQL соединения с SQLAlchemy и psycopg2? - PullRequest
0 голосов
/ 30 апреля 2020

С помощью PostgreSQL вы можете запустить этот запрос, чтобы задать спецификацию c lock_timeout для сеанса:

SET lock_timeout TO '3s'

Мне интересно, есть ли хороший способ установить эту опцию при настройке соединения с SQLAlchemy. Я создаю экземпляр сеансов SQLAlchemy следующим образом:

engine = create_engine('postgresql+psycopg2://{user}:{pswd}@{host}:{port}/{name}')
session = scoped_session(sessionmaker(bind=engine))

Я пытался передать его в connect_args, но это не поддерживается:

engine = create_engine(
    'postgresql+psycopg2://{user}:{pswd}@{host}:{port}/{name}',
    connect_args={'lock_timeout': 3}
)

Есть ли способ установить эту опцию для сеанса / соединения с SQLAlchemy и psycopg2?

1 Ответ

0 голосов
/ 30 апреля 2020

Как оказалось, это правильный способ установить lock_timeout для сеанса (обратите внимание, что значение указывается в миллисекундах):

engine = create_engine(
    'postgresql+psycopg2://{user}:{pswd}@{host}:{port}/{name}',
    connect_args={'options': '-c lock_timeout=3000'}
)
...