代码之家  ›  专栏  ›  技术社区  ›  static_rtti

有没有办法在AWS批处理作业上设置walltime?

  •  6
  • static_rtti  · 技术社区  · 8 年前

    有没有办法设置AWS批处理作业(或队列)的最大运行时间?这是大多数批处理管理器的标准设置,可以避免在作业因任何原因挂起时浪费资源。

    5 回复  |  直到 8 年前
        1
  •  5
  •   Luke Waite    7 年前

    截至2018年4月,AWS批次现在支持设置 Job Timeout 提交作业时,或在作业定义中。

    https://aws.amazon.com/about-aws/whats-new/2018/04/aws-batch-adds-support-for-automatic-termination-with-job-execution-timeout/

    资料来源: https://docs.aws.amazon.com/batch/latest/userguide/job_timeouts.html

    POST /v1/submitjob HTTP/1.1
    Content-type: application/json
    
    {
       ...
       "timeout": { 
          "attemptDurationSeconds": number
       }
    }
    
        2
  •  4
  •   Srini V    8 年前

    AFAIK没有这样的功能。然而,在 forum 对于类似的问题。

    一个想法是将批处理作为步骤函数pingback中的活动调用 从那份工作回到时间表上(例如每分钟)。如果它停止 然后,您可以在 解决方案(特别是如果作业继续作为“僵尸”ping回), 但这只是一个开始。您还可能需要将活动令牌存储在 数据库以将其跟踪到批处理作业id。

    或者,您可以将该设置分为2个步骤,并安排一个批次 作业,然后将批处理作业id传递给 第二步轮询批次(来自另一个Lambda)的 状态为重试和间隔秒(例如每分钟一次,甚至 指数退避)和基于 超时。这样,您就不需要任何外部状态存储 机制、长轮询甚至作业的“ping back”(可以是 一个僵尸),但缺点是更多的步骤。

        3
  •  1
  •   Asdfg    8 年前

    没有设置选项 timeout 但您可以设置lambda函数,该函数大约每1小时触发一次,并删除之前创建的作业 24 hours .

        4
  •  1
  •   Labib Hussain    8 年前

    使用aws已经有一段时间了,无法找到为批处理作业设置最大运行时间的方法。 然而,您可以使用一些替代方法。 AWS Forum

        5
  •  1
  •   René González Venegas    8 年前

    遗憾的是,无法设置AWS批处理的执行时间限制。 一种解决方案可能是编辑docker的入口点来安排执行时间限制。