sqlalchemy.pool + psycopg2超时问题

use*_*968 10 python postgresql sqlalchemy psycopg2

我有一个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)
Run Code Online (Sandbox Code Playgroud)

Jam*_*Lim 7

我假设你在询问PostgreSQL中的语句超时.你使用SQLAlchemy的方式有点奇怪,但一个vanilla SQLAlchemy构造函数接受一个connect_args可以用作这样的附加参数

engine = create_engine(..., connect_args={"options": "-c statement_timeout=5000"})
Run Code Online (Sandbox Code Playgroud)

请注意,超时以毫秒为单位.在您的情况下,您可以使用直接psycopg2/libpq的选项:

conn = psycopg2.connect(conn_string, , options='-c statement_timeout=5000')
Run Code Online (Sandbox Code Playgroud)

相关问题:使用sqlalchemy create_engine配置查询/命令超时?