har*_*oba 12 python postgresql psycopg2
我正在运行PostgreSQL 9.6(在Docker中,使用postgres:9.6.13映像)和psycopg2 2.8.2。
我的PostgreSQL服务器(本地)托管两个数据库。我的目标是在一个数据库中创建物化视图,该数据库使用Postgres的外部数据包装器使用另一个数据库中的数据。我通过使用psycopg2的Python脚本来完成所有这些工作。
只要创建实例化视图不会花费太长时间(即,如果要导入的数据量不太大),此方法就很好用。但是,如果该过程花费的时间超过大约250秒,则psycopg2会引发异常
psycopg2.OperationalError: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)
在Postgres的日志中找不到错误消息(或与此有关的任何消息)。
如果从SQL客户端(Postico)执行实例化视图,则创建成功完成。
这段代码大致说明了我在Python脚本中正在做的事情:
psycopg2.OperationalError: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)
keepalive在psycopg2.connect调用中添加参数似乎已经解决了问题:
self.db = pg.connect(
dbname=config.db_name,
user=config.db_user,
password=config.db_password,
host=config.db_host,
port=config.db_port,
keepalives=1,
keepalives_idle=30,
keepalives_interval=10,
keepalives_count=5
)
Run Code Online (Sandbox Code Playgroud)
我仍然不知道为什么这是必要的。我找不到任何其他人描述过keepalives在 Docker 中使用 Postgres 时必须使用参数关键字才能运行需要超过 4-5 分钟的查询,但也许很明显没有人注意到它?
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |