我知道 Azure 函数应用支持使用现成的 SendGrid 绑定来使用 SendGrid 发送电子邮件。但我似乎找不到有关其架构/优势/目的的任何信息,而不仅仅是直接调用 SendGrid API。
所以目前我有一个python函数应用程序和一个HTTP请求/响应的函数(即2个输出绑定,HTTP响应和SendGrid输出绑定)。相反,如果我宁愿直接通过python HTTP请求而不是通过设置输出绑定来调用SendGrid API,有什么缺点吗?
我无法弄清楚幕后发生了什么 - Azure 是否在做出 HTTP 响应之前等待发出 Sendgrid 请求(来自输出绑定)?情况似乎并非如此,因为如果发送网格部分出现问题,HTTP 请求就会出错。那么使用输出绑定是否有时间/网络优势?
还是输出绑定的存在只是为了向 sendgrid 电子邮件提供与语言无关的“客户端”(JSON 字符串),并且可以在 C# 扩展中维护 sendgrid 的主客户端?
我几乎觉得直接拨打 Sendgrid 是有利的。如果我尝试在我的函数中更早地发送电子邮件,并且该函数被写为异步,那么它可以在其余部分完成后立即返回(如果 sendgrid 已经返回)。我只是想确保我没有错过某些东西,也没有利用输出绑定提供的东西。
任何类型的输出绑定只是为了方便起见,因为它们将处理建立的客户端和连接,而无需您自己为此设置代码。它们也经过优化,并考虑了后端体系结构,以确保正确重用和处理连接,因此您可能不会遇到 SNAT 端口耗尽或计算机本身的连接限制的任何问题。它们主要是为了方便,但它们在github上也是开源的。如果您想更好地了解它们的工作原理,可以花时间浏览它们:
-https://github.com/Azure/azure-webjobs-sdk-extensions/blob/dev/src/WebJobs.Extensions.SendGrid/SendGridAttribute.cs
如果您需要绑定没有的任何特殊注意事项或配置,那么我会说继续使用您的代码。请记住考虑函数的连接处理,例如重用连接以及为 http 客户端建立单例或静态全局变量。