dav*_*ode 20 python postgresql sqlalchemy psycopg2
我试图找出如何设置连接超时create_engine()
,到目前为止我已经尝试过:
create_engine(url, timeout=10)
Run Code Online (Sandbox Code Playgroud)
TypeError:使用配置PGDialect_psycopg2/QueuePool/Engine发送到create_engine()的无效参数'timeout'.请检查关键字参数是否适合此组件组合.
create_engine(url, connection_timeout=10)
Run Code Online (Sandbox Code Playgroud)
TypeError:使用配置PGDialect_psycopg2/QueuePool/Engine发送到create_engine()的无效参数'connection_timeout'.请检查关键字参数是否适合此组件组合.
create_engine(db_url, connect_args={'timeout': 10})
Run Code Online (Sandbox Code Playgroud)
(psycopg2.OperationalError)无效的连接选项"timeout"
create_engine(db_url, connect_args={'connection_timeout': 10})
Run Code Online (Sandbox Code Playgroud)
(psycopg2.OperationalError)无效的连接选项"connection_timeout"
create_engine(url, pool_timeout=10)
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
dav*_*ode 35
正确的方法是这个(connect_timeout
而不是connection_timeout
):
create_engine(db_url, connect_args={'connect_timeout': 10})
Run Code Online (Sandbox Code Playgroud)
...它适用于Postgres和MySQL
dap*_*piu 10
对于使用Flask-SQLAlchemy而不是普通 SQLAlchemy 的人,您可以选择两种将值传递给 SQLAlchemy 的方法create_engine
:
SQLALCHEMY_ENGINE_OPTIONS
配置键(需要 Flask-SQLAlchemy>=2.4)SQLALCHEMY_ENGINE_OPTIONS = {
'connect_args': {
'connect_timeout': 5
}
}
Run Code Online (Sandbox Code Playgroud)
engine_option
实例化时使用flask_sqlalchemy.SQLAlchemy
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(
engine_options={ 'connect_args': { 'connect_timeout': 5 }}
)
db.init_app(app)
Run Code Online (Sandbox Code Playgroud)
编辑:示例使用的connect_timeout
参数(至少)适用于 MySQL 和 PostgreSQL(值表示秒),其他 DBMS 可能需要传递不同的参数名称以影响连接超时。我建议检查您的 DBMS 手册以检查此类选项。
回应@nivhanin 下面的评论,其中询问“connect_timeout 变量的默认值是多少(一般情况下和特定于 MySQL 数据库?”?(我没有足够的声誉来发表评论)。
connect_timeout
Mysql5.7默认为10秒
也可能相关:
wait_timeout
--默认值 28800 秒(8 小时)interactive_timeout
--默认值 28800 秒(8 小时)对于SQLite 3.28.0:
create_engine(db_url, connect_args={'timeout': 1000})
Run Code Online (Sandbox Code Playgroud)
将连接超时设置为 1000 秒。
归档时间: |
|
查看次数: |
15849 次 |
最近记录: |