簡體   English   中英

node-postgres 腳本執行完后不結束

[英]node-postgres script does not end after it is finished

我有一個名為scheduler()的腳本,它在 Postgres 數據庫上運行一些查詢然后完成。 我遇到腳本掛在終端中並且之后不退出的問題。

這是我的代碼:

調度器.js

const {pool} = require("./db");
const scheduler = async function() {
    try {
        await auctionCheck();
        return pool.end().then(() => {
            console.log('Pool\'s closed');
            return;
        })

    } catch (e) {
        console.error(e)
        return;
    }

}
return scheduler();

數據庫.js

const {Pool} = require("pg");
const pool = new Pool({
    connectionString: process.env.DATABASE_URL,
});

pool.on('error', (err, client) => {
    console.error('Unexpected error on idle client', err)
    process.exit(-1)
})

pool.connect();

module.exports = {pool};

當我沒有pool.end()調用時,我的腳本沒有退出,但它也沒有隨着end()調用退出。 永遠不會打印“Pool's closed”日志。 node-pg 文檔說我應該這樣做來關閉連接(我假設我的腳本沒有完成的原因是由於打開的數據庫連接。)我想基本上定期運行一些函數然后完成腳本,但是目前它只是活着。 我究竟做錯了什么?

似乎原因是在db.js中我有pool.connect() 因此,當我pool.end()時,它無法關閉連接,因為它沒有池中的所有客戶端 - 一個已經在db.js中創建但從未發布。 當我在db.js中刪除pool.connect()時,進程按預期退出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM