我有一个
Ruby脚本,它连接到postgres数据库,运行一些查询,然后关闭/返回给用户的数据.
该脚本工作正常,但如果我给它一个错误的主机名,整个脚本就会挂起,我必须ctrl-Z出来.我知道为了解决这个问题,我需要查看postgres的libpq后端,但我对于如何将它全部包装到我的ruby脚本中感到很遗憾.
我正在使用Ruby 1.8和pg gem处理postgres的东西,调用open open:
myConnection = PGconn.connect(host,port,pgOptions,pgTTY,name,user,password)
(options和tty只是空字符串)
任何帮助/提示/建议都会很棒!
最佳答案 有一个connect_timeout选项,您可以这样做:USING STRING
connection_string =“host = YOUR_HOST port = YOUR_PORT connect_timeout = YOUR_TIMEOUT PERIOD”
PGconn.connect(connection_string)
PGconn.connect还提供了更多rubyesque哈希表示法
:host => YOU_HOST,:port => YOUR_PORT,:connect_timeout => YOUR_TIMEOUT_PERIOD
此外,您可以将其包装在开始救援中,以便在连接超时时,其余代码不会运行
免责声明:我实际上没有对此进行测试,但它是pg gem文档的一部分