сброс соединения с postgres nodejs - PullRequest
0 голосов
/ 08 июля 2019

Я использую пакет pg для обработки взаимодействия dp в моем приложении nodejs.

Цель состоит в том, чтобы наблюдать за добавлением / удалением файлов изображений в папке через пакет chokidar и файлы карт, добавляемые / удаляемые в таблицу БД, после изменения размера, если это необходимо.

Сначала я замечаю, что у chokidar большая задержка при запуске обратного вызова нового файла, добавленного в папку, возможно, из-за большого количества файлов> 100k

В любом случае, он запускает несколько событий одновременно, вызывая сброс соединения. Это должно быть связано с неправильным способом обработки пула соединений в pg. Вот это код:

const gm = require('gm').subClass({ imageMagick: true });
const chokidar = require('chokidar');
const pg = require('pg');

const pool = new pg.Pool({ 
    connectionString: connectionString,
    keepAlive : true });

watcher.on('add', file => {
console.log("File added: " + file)
pool.query(buildQueryStringInsert([file]))
    .then(res => console.log("Query executed: "))
    .catch(e => console.error(e.stack));

gm(file)
    .size(function (err, size) {
        if (size.width > resizeDim.width) {
            resizeImage(file, file.insert(imageSuffix, file.lastIndexOf(".")))
        }
    });
});

StackTrace

Я также попытался установить соединение с клиентом и выпустить, как указано в документации, но я все еще получаю ту же ошибку

try {
    const client = await pool.connect()
    await client.query(buildQueryStringInsert([file]))
} catch (err) {
    console.error(err.stack)
} finally {
    client.release()
}

Спасибо за ваше время

...