python - 在 AWS 上管理工作人员

标签 python amazon-web-services rabbitmq celery

我偶尔会执行高 CPU 密集型任务。它们被启动到一个单独的 high-intensity 队列中,该队列由一个非常大的机器(很多 CPU,很多 RAM)消耗。然而,这台机器每天只需要运行大约一个小时。

我想在 AWS 上自动部署此镜像,由 high-intensity 队列中的未完成消息触发,然后在不忙时安全停止。类似的东西:

  • 一些代理(可能是我自己的软件在我的监控服务器上运行)检查队列大小,确定有 x > x_threshold 个新作业要完成(例如,如果有 5 个未完成的,我想触发“大”工作)
  • 启动特定的 AWS 实例,向代理 (RabbitMQ) 注册并使用作业
  • 一旦工作人员空闲了一段时间 t > t_idle(比如,超过 10 分钟),机器就会关闭。

我是否可以使用任何工具来简化自动化过程,还是我必须自己引导一切?

最佳答案

您可以 public a custom metric到 AWS CloudWatch,然后设置 autoscale triggerscaling policy基于您的自定义指标。 Autoscale 可以为您启动实例并根据您的策略终止它。您必须在 launch configuration 中包含适当的用户数据引导您的主机。就像任何 EC2 实例的用户数据一样,它可以是 bash 脚本或 ansible 剧本或您选择的任何配置管理工具。

关于python - 在 AWS 上管理工作人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22719374/

相关文章:

python - 如何从字典值中替换字符串

amazon-web-services - 我们如何为 S3 中的特定文件夹启用加密

erlang - 无法启动rabbitmq-server

rabbitmq - PubSub + 可靠的消息传递给不可靠的订阅者

python - 使用递归创建列表组合

python - qt设计问题

Python从子集中查找对(对数正在变化)

amazon-web-services - 我们可以只使用时间戳列的年月作为 Amazon Redshift 中的分布键吗

amazon-web-services - 使用 cloudformation 模板创建 s3 存储桶时出现 ValidationError

python - Celery 不排队到远程代理,而是将任务添加到本地主机