node-postgresのタイムアウト的な

node-postgresでPostgreSQLにアクセスしてレコードを出力するコードを書いたのだけど。

var pg = require('pg');

pg.connect('', function(err, client) {
  if (err) throw err;

  client.query('SELECT * FROM temp LIMIT 1', function(err, result) {
    if (err) throw err;
    console.dir(result.rows[0]);
  });
});
$ node index.js
{ id: 1, name: 'sasaplus1' }
(しばらくプロンプトが戻って来ない)


タイムアウトの値がデフォルトだと30秒?に設定されてるらしくて戻って来ないみたい。

pg.defaults.poolIdleTimeout = 500;

とかにするとすぐに戻ってくる。


まあ、実際はこんなにタイムアウトを短くしないだろうし、pg.connectで受け取ったClientは内部で適当に管理してくれてるらしいし、client.end()呼ばないでそのまま他のコールバック呼んでいけば、いつの間にか切断されてる、って感じになるのかな。