2017-10-10 8 views
0

나는 다음과 같은 쿼리가 :pg 풀이 활성/유효하고 있는지 여부를 어떻게 확인합니까?

QUERY 1 : 나는 수영장이 활성화되어 있는지 확인 어떻게, 아래의 코드에서, 의 기능을 호출하기 전에를?

const { Pool } = require('pg'); 
var pool = new Pool(); //global variable, used by multiple modules 

function f1(){ 
    /* 
    Check here if pool is active or not. If active, then execute following 
    code 
    */ 
    pool.connect(...) 
} 

확인하지 않으면 풀이 활성 상태가 아닌 경우 (다른 모듈에서 종료되었을 수 있음) 다음 오류가 발생할 수 있습니다.

Error: Cannot use a pool after calling end on the pool 

쿼리 2 : 풀을 종료하지 않으면 어떻게됩니까?

답변

0

QUERY 1 : 풀의 모든 기능을 호출하기 전에 아래 코드에서 풀이 활성 상태인지 어떻게 확인합니까 ??

활성 상태가 아닙니다. 풀을 초기화하면 DB에서 쿼리를 사용하여 연결을 얻을 수 있습니다. 풀을 계속 사용하려면 end()를 호출하지 마십시오. 나는 풀을 종료하지 않으면 어떻게됩니까 :

const pool = new Pool({ 
    host: 'localhost', 
    user: 'database-user', 
    max: 20, 
    idleTimeoutMillis: 30000, 
    connectionTimeoutMillis: 2000, 
}) 

쿼리 2 - 다음과 같이 구성에 관해서는 당신은 시간 제한을 구성 할 수 있습니다?

위에서 말한 것처럼 기본 시간 제한이 설정되었습니다. pool.end()으로 전화하지 않고 응용 프로그램이 시간 초과 기간 동안 유휴 상태이면 연결은 자동으로 끊어집니다. 문서 당으로

-

호출 pool.end는 모든 활성 클라이언트의 풀 드레인 분리 한 풀의 내부 타이머를 종료합니다. 풀을 사용하는 스크립트의 끝에서 또는 프로세스가 정상적으로 종료하려고 시도 할 때이를 호출하는 것이 일반적입니다. 더 detials를 들어

이 문서 참조 - 첫 번째 쿼리에 관해서 https://node-postgres.com/api/pool

+0

을, 나는 풀) (pool.end'경우 (자체 가까이/종료 될 수 있다는 가능성이 있는지 여부를 알고 싶어'하지 않은 사용되었습니다). [스레드] (https://github.com/brianc/node-postgres/issues/1477)의 토론에 따르면 대답은 '아니오'인 것으로 보입니다. –

+0

풀에 대해 잘 모르지만 지정된 시간이 지난 후에 풀이 연결됩니다. –

+0

데이터베이스 연결의 경우 문서에 명확하게 기록되어 있으며 해당 이벤트 리스너도 있습니다. 나는 수영장에 대해서만 의심의 여지가있다. –

관련 문제