4

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

该脚本工作正常,但如果我给它一个错误的主机名,整个脚本就会挂起,我必须按 ctrl-Z 退出。我知道要解决这个问题,我需要查看libpqpostgres 的后端,但我不知道如何将它全部包装到我的 ruby​​ 脚本中。我正在使用Ruby 1.8pg gem处理 postgres 的东西,调用打开连接:

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

(options 和 tty 只是空白字符串)

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

4

1 回答 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 还提供了一个更加 ruby​​esque 的哈希表示法

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

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

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

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

于 2013-03-06T21:39:46.697 回答