【问题标题】:Handling time consuming operations using Nodejs and AWS使用 Nodejs 和 AWS 处理耗时的操作
【发布时间】:2018-06-05 19:21:06
【问题描述】:

我正在处理的项目的当前设置基于 Nodejs/Express 和 AWS。 AWS Lambda 每天都会触发,并用于调用 API 端点,该端点预计会通过 Sendgrid 触发不同数量的电子邮件(数百到数千)。电子邮件数量较少时,它运行良好,但当电子邮件数量约为 1000 时,Lambda 超时并且 API 崩溃。

Lambda 的限制是 1 分钟。将它提高到 5 分钟可能会使 1000 封电子邮件的情况通过,但当数量达到数千封时可能会失败。除此之外,我们希望避免让服务器忙碌几分钟,因为它最初设置为 1 分钟。

我们现在正在寻找针对这种特定情况的更好解决方案。什么是更好的方法,是使用 SNS 队列还是无服务器将所有发送电子邮件的代码移动到 Lambda 的选项?

提前感谢您的任何意见,如果需要更多信息,请告诉我。

【问题讨论】:

  • 是 lambda 的最大超时时间为 5 分钟,是否超过 5 分钟?
  • 如果您需要的执行时间超过当前的最大值,即 5 分钟,您可以使用 lambda 来触发发送电子邮件的 aws fargate 容器。 Aws Fargate 使用您提供的 docker 容器来执行此操作
  • 您能否详细介绍一下您当前的解决方案?电子邮件地址存储在哪里? API 端点是 Sendgrids 吗?如果是这样,它是速率限制吗? Lambda 是进行 1 次 API 调用还是 1000 次?
  • @GowthamChand 最初将限制设置为 60 秒,目的是降低服务器繁忙的时间。将它提高到 5 分钟可能适用于这种“1000 封电子邮件”的情况,但可能会在数千封电子邮件被解雇时达到限制。除此之外,我们希望避免让它忙碌 2-3 分钟。我也用这些信息更新了问题。

标签: node.js amazon-web-services express aws-lambda


【解决方案1】:

Lambda 不是为长时间运行的操作而设计的。您可以使用 Elastic Beanstalk Workers https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html

简而言之,lambda 将任务发布到 SQS 队列并由弹性 beanstalk 应用程序处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-17
    • 2018-10-27
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多