如何从功能

时间:2019-07-05 18:24:31

标签: c# azure-functions sftp azure-storage-blobs ssh.net

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

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

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

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

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

我们可能有500个blob都在触发该功能,这反过来又打开了与sftp.mysftpserver.com的500个连接。

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

1 个答案:

答案 0 :(得分:-1)

在没有有关特定实现的更多信息的情况下,我只能提供一般建议。假设您正在使用某种FTP客户端,则可以使用static instance of that client在Functions实例中共享它。如果吞吐量那么高,那么Functions服务将扩展到多个实例,但是假设您正在使用消耗计划,它将max out at 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库,则可以创建一个静态助手类来处理创建客户端的过程。