Python 管理AWS上的工人

Python 管理AWS上的工人,python,amazon-web-services,rabbitmq,celery,Python,Amazon Web Services,Rabbitmq,Celery,我偶尔会有非常高的CPU密集型任务。它们被放入一个单独的高强度队列中,由一台非常大的机器(大量CPU、大量RAM)使用。然而,这台机器每天只需运行约一小时 我希望自动在AWS上部署此映像,由高强度队列中的未完成消息触发,然后在不忙时安全停止。大致如下: 一些代理(可能是我自己的软件在我的监控服务器上运行)检查队列大小,确定是否有x>x_阈值要完成的新作业(例如,如果有5个未完成的“大”作业,我想触发) 启动特定的AWS实例,向代理(RabbitMQ)注册自身并使用作业 一旦工人闲置了一段时间(

我偶尔会有非常高的CPU密集型任务。它们被放入一个单独的
高强度
队列中,由一台非常大的机器(大量CPU、大量RAM)使用。然而,这台机器每天只需运行约一小时

我希望自动在AWS上部署此映像,由
高强度
队列中的未完成消息触发,然后在不忙时安全停止。大致如下:

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

是否有任何工具可供我使用,以简化自动化过程,或者我将不得不自己启动所有东西?

对于您的场景来说,可能有些过火,但作为起点,您可能需要查看AWS OpsWorks

如果这确实比您需要的级别高一点,那么您可以使用aws cloudformation—可能更接近您想要的金属


您可以访问AWS CloudWatch,然后根据您的自定义指标设置and。Autoscale可以根据您的策略启动实例并终止它。您必须在中包含适当的用户数据才能引导主机。就像任何EC2实例的用户数据一样,它可以是bash脚本或ansible playbook或其他任何内容您选择的配置管理工具是。

如果使用Amazon SQS,甚至不需要自定义度量。SQS的队列长度是Amazon CloudWatch度量之一。使用RabbitMQ,自定义度量+报警+自动缩放是一种方法