[英]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.