У меня есть функция 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.
Кто-нибудь решил эту проблему?