繁体   English   中英

如何从功能管理与sftp的并发连接

[英]how to manage concurrent connections to sftp from function

我们如何管理并发连接,也许通过将文件批处理到同一连接中来进行管理?

我正在创建一个由新blob触发的azure函数(可以将其更改为简单的计时器触发)。 一个Blob的示例为:

{
"server":"sftp.mysftpserver.com",
"credentials":"topsecret",
"body":"This text will be uploaded to the sftp server above"
}

该函数将登录到服务器,并在body发送有效负载。

我们如何限制正在启动到同一服务器的连接数?

我们可能有500个blob都触发了该函数,而该blob又打开了与sftp.mysftpserver.com 500个连接。

同时可能只有2个Blob正在启动到sftp.otherserver.net连接。

如果没有有关具体实现的更多信息,我只能提供一般性建议。 假设您正在使用某种FTP客户端,则可以使用该客户端静态实例在Function实例中共享它。 如果吞吐量那么高,那么Functions服务将扩展到多个实例,但是假设您在使用计划中,则最大值将为200 除非存在巨大的瓶颈,否则在扩展达到200个实例之前,可能会清除500个文档的峰值。

例如,您将执行以下操作:

// Create a single, static SftpClient
private static SftpClient client = new sftpClient(endpoint, user, pass);

public static async Task Run(string input)
{
    var response = await sftpClient.SendAsync("filename.txt", input);
}

如果您不使用默认情况下可以执行此操作的SFTP库,则可以创建一个静态助手类来处理创建客户端的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM