繁体   English   中英

sqlalchemy.pool + psycopg2超时问题

[英]sqlalchemy.pool + psycopg2 timeout issue

我有一个Web应用程序超时问题,我怀疑该错误在数据库中。 查询运行时间过长。

如何增加设置的允许运行时间?

我通过使用sqlalchemypsycopg2使用数据库池。

我的数据库是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')

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM