【问题标题】:SendGrid Email Activity API rate limitSendGrid 电子邮件活动 API 速率限制
【发布时间】:2021-03-12 17:08:25
【问题描述】:

在测试使用 SendGrid 电子邮件活动 API 的代码时,我收到“消息过多”错误。我检查了“速率限制”响应标头,看来我每天每 5 分钟的块限制为 10 个请求。即每小时前5分钟可以有10个请求,接下来的5分钟可以有10个请求,以此类推。

我就此询问了 SendGrid 支持。第一个响应非常通用,但似乎表明阈值是正确的,并说我真的应该使用 webhook 来获取状态。我在文档中没有找到任何说明这一点的内容,也没有看到任何指定速率限制的内容。

对于那些使用电子邮件活动 API 的人,是否限制为每 5 分钟 10 个请求?如果是,您如何处理 API?

【问题讨论】:

    标签: sendgrid sendgrid-api-v3


    【解决方案1】:

    这是我最终使用请求、坚韧和速率限制的 sn-p:

    from ratelimit import limits, sleep_and_retry
    import requests
    import tenacity
    
    @sleep_and_retry
    @limits(calls=2, period=60)
    @tenacity.retry(
        retry=tenacity.retry_if_exception_type(requests.exceptions.HTTPError),
        stop=tenacity.stop_after_attempt(10),
        wait=tenacity.wait.wait_fixed(60),
    )
    def _call_api(headers, params):
        response = requests.get(
            "https://api.sendgrid.com/v3/messages",
            json={},
            headers={},
            params={},
        )
        try:
            response.raise_for_status()
        except requests.exceptions.HTTPError:
            logger.info(f"Request failed {response.headers}, retrying in 1 minute")
            raise
        return response
    

    【讨论】:

      【解决方案2】:

      我收到了来自 SendGrid 支持的回复说:

      您的发现是正确的,因为我们确实将此端点限制为每 5 分钟 10 个请求。这是一个我们无法提高的硬性限制。电子邮件活动源以及电子邮件活动 API 端点用于解决特定问题并获取详细的消息元数据。

      【讨论】:

        【解决方案3】:

        我之前发现速率限制为 10/5 分钟,但在过去一周的某个时间,SendGrid 似乎已将速率限制更改为每 60 秒 2 个请求。谁能证实这一点?

        我正在使用 webhook 向我的应用程序报告未送达,但我还需要使用活动 API 来解决异步退回通知。异步退回是指目标邮件服务器在 smtp 会话期间接受邮件但随后发送退回通知电子邮件。发生这种情况时,SendGrid 不会在 webhook 中提供退回邮件的详细信息,并且该邮件被错误地报告为在 SendGrid 应用程序中传递。当被问到时,他们回答说他们无能为力,尽管我已经向他们解释了我如何使用他们的活动 API 来解决这个问题。

        我支付了额外费用来使用活动 API 来解决他们应该自己解决的问题,所以我很沮丧他们应用了这种限制性的速率限制,然后在没有通知的情况下更改它们。

        【讨论】:

        • SendGrid 技术支持已经向我证实了这一点: >在与我们的前辈澄清此事后,事实证明,所提到的事情确实经历了预期的变化,因为速率限制曾经是每 5 个请求 10 个请求确实是分钟,如前所述,但现在是每 1 分钟 2 个请求。我可以确认此更改的目的是为了系统稳定性,因此没有任何回旋余地来提高此速率限制。总体而言,费率是相同的,不同之处在于我们的客户不能再在窗口开始时花费该限制。
        猜你喜欢
        • 2017-09-11
        • 2022-09-23
        • 2021-06-16
        • 1970-01-01
        • 1970-01-01
        • 2016-11-30
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        相关资源
        最近更新 更多