Ruby 脚本因 PG 连接调用错误而挂起

问题描述 投票:0回答:1

我有一个 Ruby 脚本,它连接到 postgres 数据库,运行一些查询,然后关闭/返回数据给用户。

脚本工作正常,但如果我给它一个错误的主机名,整个脚本就会挂起,我必须按 ctrl-Z 退出它。 我知道为了解决这个问题,我需要研究 postgres 的

libpq
后端,但我不知道如何将其全部包装到我的 ruby 脚本中。 我正在使用
Ruby 1.8
pg gem
来处理 postgres 的东西,调用打开连接:

myConnection = PGconn.connect(host,port,pgOptions,pgTTY,name,user,password)

(选项和tty只是空字符串)

任何帮助/提示/建议都会很棒!

ruby postgresql libpq
1个回答
2
投票

有一个 connect_timeout 选项,所以你可以这样做:

USING STRING
connection_string = "host=YOUR_HOST port=YOUR_PORT connect_timeout=YOUR_TIMEOUT PERIOD"
PGconn.connect(connection_string)

PGconn::connect
还提供了更加红宝石式的哈希表示法

:host => YOUR_HOST, :port => YOUR_PORT, :connect_timeout => YOUR_TIMEOUT_PERIOD

您还可以将其包装在开始救援中,以便在连接超时时其余代码不会运行

免责声明:我还没有实际测试过这个,但它是 pg gem 文档的一部分

http://deveiate.org/code/pg/

© www.soinside.com 2019 - 2024. All rights reserved.