javascript - 在 Azure Functions 中共享 SFTP 连接
问题描述
我有一个将文件发送到 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 函数空闲时,似乎不会调用 close 和 end 侦听器。当我在一段时间后尝试使用 sftp 连接时,那里没有连接并且对 sftp 服务器的调用超时。
有没有人解决过这个问题?
解决方案
推荐阅读
- android - 如何使用 Work Manager 处理来自 FusedLocationProviderClient 的位置更新?
- javascript - Javascript动画循环不会停止
- lua - 支持“跳转到定义”交叉文件的 LUA IDE
- php - 二维数组的嵌套列表
- cython - 存储临时 Python 引用的不安全 C 派生
- python - 如何对 csv 中的“日期”列进行排序以仅显示年度范围的春季数据
- c# - 用于增量线程参与者执行的 C# 静态公共字段
- docusignapi - 是否可以为docusign模板收件人设置recipientId
- python - Kivy - 一行被复制/镜像,我看不到原因
- macos - 使用 ffmpeg 为 AppStore 缩放应用预览视频