![](/img/trans.png)
[英]Create a sqlalchemy engine using an existing psycopg2 connection pool
[英]sqlalchemy.pool + psycopg2 timeout issue
我有一個Web應用程序超時問題,我懷疑該錯誤在數據庫中。 查詢運行時間過長。
如何增加設置的允許運行時間?
我通過使用sqlalchemy
和psycopg2
使用數據庫池。
我的數據庫是Postgres數據庫。
import psycopg2
import sqlalchemy.pool as pool
def generate_conn_string(db_name):
db_name = db_name.upper()
conn_string = "host='{}' port='{}' dbname='{}' user='{}' password='{}' ".format(
os.environ.get('DB_HOST_' + db_name),
os.environ.get('DB_PORT_' + db_name),
os.environ.get('DB_NAME_' + db_name),
os.environ.get('DB_USER_' + db_name),
os.environ.get('DB_PASSWORD_' + db_name))
return conn_string
def get_conn_():
db_name = "mydb"
conn_string = Pooling.generate_conn_string(db_name)
conn = psycopg2.connect(conn_string)
return conn
connection_pool = pool.QueuePool(get_conn, max_overflow=30, pool_size=5)
我假設您正在詢問PostgreSQL中的語句超時 。 您使用SQLAlchemy的方式有些奇怪,但是普通的SQLAlchemy構造函數接受了一個額外的connect_args
參數,該參數可以這樣使用
engine = create_engine(..., connect_args={"options": "-c statement_timeout=5000"})
請注意,超時時間以毫秒為單位。 在您的情況下,可以將選項與直接的psycopg2 / libpq一起使用:
conn = psycopg2.connect(conn_string, , options='-c statement_timeout=5000')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.