4

我正在使用 AWS 基础设施开发更广泛的 Web 应用程序。它有两个“工作”组件,它们从 SQS 读取工作并将结果写入 RDS 数据库。其中之一是 Python,我已经在单个 Elastic Beanstalk 实例上使用了它。第二个使用.NET,我目前正在研究如何部署它。对于生产,两者都将具有多个实例的弹性。

由于这些处理组件不是 Web 应用程序(即它们不响应 http 请求),我必须明确启动它们。对于 Python 示例,我使用 .ebextensions 文件:

container_commands:
  02-start-command:
    command: "nohup python scannerapp.py > foo.out 2> foo.err < /dev/null &"
    leader_only: false

如何对 .NET 应用程序执行相同操作?与上面的 Python/Linux 示例一样,Windows 配置文件支持“命令”和“容器命令”,但它们适用于启动程序(例如安装程序)。IE。在命令退出之前,启动/安装不会完成。nohup 命令解决了 Python 的问题。如何使用 .NET 辅助应用程序执行此操作?

还是太难了,我应该考虑先移植到 MONO 并使用其中一个 Linux 选项?(MONO 运行成本预计会更具成本效益,所以它已经在未来的待办事项清单上)

4

1 回答 1

6

您可以对 .NET 容器执行相同的操作。您必须将您的工作人员安装为 Windows 服务。查看此博客文章,其中详细解释了它。在高层次上,您将拥有一个 .ebextensions 文件,其中包含:

sources:
  c:/AppSupport/MyAppJanitor: http://s3.amazonaws.com/my-app-support/MyAppJanitor.zip
commands:
  install-janitor:
    command: C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\installutil MyAppJanitor.exe
    cwd: c:/AppSupport/MyAppJanitor
    waitForCompletion:0
services:
  windows:
    MyAppJanitor:
      enabled: true
      ensureRunning: true
      commands: install-janitor
于 2013-10-21T23:33:04.357 回答