2013-01-04 64 views
4

我有一個Ruby腳本是連接到一個Postgres數據庫,運行一些查詢,然後關閉/數據返回給用戶。Ruby腳本掛壞PG連接呼叫

該腳本工作正常,但如果我給它一個壞主機整個腳本只是掛起,我必須按Ctrl-Z出來。我知道,要解決這個問題,我需要考慮的libpq後端Postgres的,但我寧願在不知如何把它包起來都成我的Ruby腳本。 我使用Ruby 1.8pg gem處理Postgres的東西,調用打開連接:

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

(選項和TTY只是空字符串)

任何幫助/提示/建議將是巨大的!

+0

一兩分鐘後,它會超時的文件的一部分。您正在等待TCP超時。 – derobert

+0

我強烈建議考慮使用[續](http://sequel.rubyforge.org/)來管理你的數據庫連接。它使生活變得更容易。檢查出它是如何很好地做事一嘗[cheatsheet文件(http://sequel.rubyforge.org/rdoc/files/doc/cheat_sheet_rdoc.html)。 –

回答

2

有一個connect_timeout選項,這樣你可以因爲這樣做:使用字符串 connection_string = 「主機= YOUR_HOST端口= YOUR_PORT connect_timeout = YOUR_TIMEOUT期」 PGconn.connect(connection_string)

PGconn.connect還提供了更rubyesque哈希符號

:主機=> YOU_HOST,:端口=> YOUR_PORT,:connect_timeout => YOUR_TIMEOUT_PERIOD

您也可以在一開始救援包裝這使你的代碼的其餘部分不一樣,如果連接運行超時

免責聲明:我沒有實際測試過這一點,但它是爲PG寶石

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