Совместное использование соединения SFTP в функциях Azure - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть функция Azure, которая отправляет файл на SFTP-сервер.Он может вызываться несколько раз, поэтому для экономии времени при подключении к SFTP-серверу я хотел бы повторно использовать SFTP-соединение.

const Client = require("ssh2-sftp-client");
const sftp = new Client();
let sftpConnected = false;

const sendToSFTP = async (data, location, context) => {

    await setConn(context)

    try{
        await sftp.put(data, location);
    }catch(err){
        context.log.error('sftp put error: ' + err);
    }
 }

const setConn  = async (context) => {
    if (sftpConnected) return

    try{
        await sftp.connect({
            host: 'myserver',
            username: 'user',
            passphrase: 'pwd',
        });
        sftpConnected = true;
    }catch(err){
        context.log.error('sftp connect error: ' + err);
    }  
 }

sftp.on('close', () => {
    sftpConnected = false;
    sftp.end();
});
sftp.on('end', () => {
    sftpConnected = false;
    sftp.end();
});

exports.sendToSFTP = sendToSFTP;

Это работает при локальном тестировании, но при развертывании в Azure закрывающие и конечные прослушиватели, похоже, не вызываются, когда функция Azure бездействует.Когда я пытаюсь использовать соединение sftp по прошествии некоторого времени, соединения там нет, и время ожидания вызова к серверу sftp.

Кто-нибудь решил эту проблему?

...