【问题标题】:AWS Elastic Beanstalk cron in worker environment for Node app节点应用程序的工作环境中的 AWS Elastic Beanstalk cron
【发布时间】:2019-09-16 10:56:36
【问题描述】:

我已阅读 AWS 关于 worker environments and cron 的文档。就创建 cron.yaml 文件而言,这一切都是有道理的,但我对与我的应用程序相关的实际设置有几个问题。对 AWS 来说还是很新的。

我在 AWS EB 中有 3 个环境——生产网络服务器、暂存网络服务器和工作环境。它们都在运行 node.js,我将应用程序部署到生产和登台环境。

我想设置一些 cron 作业来在工作环境中执行定期任务,这些任务在生产应用程序中执行,例如创建备份或发送用户电子邮件。

我的猜测是,我应该设置一个新的 Express 应用程序,将其部署到接受 /backup 或 /sendEmail 等请求的工作环境中,然后从工作环境应用程序中调用生产应用程序实际做这项工作。

我这样做的方式是否正确?或者这会将负载放在我的生产环境上,而不是实际使用工作人员?

我在这方面缺乏经验,因此很难提出正确的问题,所以我可能没有意义。感谢任何指导。

【问题讨论】:

  • 我认为您对工作人员设置略有误解。 cron.yaml 文件列出了将在工作应用程序中接收 POST 请求的端点。 (您的 cron.yaml 文件中的任何内容都不会触发任何影响您的生产应用程序的内容)。我发现在我的代码中创建一个接收 cron.yaml 文件指示的所有 POST 请求的专用控制器是最容易的。然后我将相同的代码部署到 Web 服务器和工作线程。当 cron 作业运行时,会向您在 cron.yaml 中指定的端点发送 POST 请求,并且您的周期性任务工作将全部发生在 worker 上。
  • 谢谢@littleforest!这有助于澄清一些事情。

标签: javascript node.js amazon-web-services cron amazon-elastic-beanstalk


【解决方案1】:

来自AWS doc

如果您的应用程序执行需要很长时间才能完成的操作或工作流,您可以将这些任务卸载到专用的工作环境中。将 Web 应用程序前端与执行阻塞操作的进程分离是确保应用程序在负载下保持响应的常用方法。

因此,如果您创建仅调用生产环境的代码,您将没有任何好处。

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 2020-10-29
    • 2016-07-30
    • 2015-11-19
    • 2015-03-25
    • 2016-06-18
    • 2021-09-29
    • 2015-04-08
    • 2018-06-19
    相关资源
    最近更新 更多