我设置了Azure批处理服务,并设置了每分钟运行一次的作业计划。作业管理器任务在同一作业中创建3-10个任务。
有时,作业中的其中一个任务可能需要很长时间才能完成,但通常会非常快。如果其中一个任务需要很长时间才能应用,则作业管理器任务的下一次迭代不会在这种情况下开始。它基本上是等到上一次迭代中的所有任务都完成了。
有没有一种方法可以确保作业调度每分钟都会创建作业的一个版本,即使之前迭代中的所有任务都没有完成?
我知道一种选择是让作业管理器任务创建额外的作业,而不是任务。但最好的是,我希望在作业调度级别有一些配置,我可以打开它,允许调度创建任务,而不需要依赖于前一个作业。
发布于 2019-10-30 18:56:48
这看起来更像是设计问题,AFAIK,不,从az批处理的角度来看,重复的活动作业名称应该是不可行的。(如果这是可行的,我会改正的)
虽然为了进一步思考这一点,你可以通过Azure batch technical overview page或像这样的帖子阅读各种设计建议:
我认为简单性会更好,就像使用唯一的作业名称或其他一些东西来处理每次迭代一样,但你会更好地了解你的场景。希望这能有所帮助。
发布于 2019-10-31 05:05:44
目前,作业计划在任何给定时间(link)下最多只能有一个活动作业,因此您看到的行为是预期的。
我们没有任何简单的功能,您只需“打开”即可从单个作业计划中实现并发作业--但我有一个建议:
不是使用JobSchedule直接运行所有处理,而是使用它来创建执行处理的“工作者”作业。
例如。
上午10:03,作业计划触发create job processing-20191031-1003.
processing-20191031-1004.
processing-20191031-1005.
因为您的作业计划所做的唯一事情就是创建另一个作业,所以它将非常快地完成,从而确保按时创建下一个作业。
由于您现有的作业已经创建了数量可变的任务(您上面说的是3-10个任务),我希望这不会对您的代码造成非常复杂的更改。
请注意,您需要确保您的并发工作者作业不会因为多次尝试执行相同的工作而彼此踩脚趾。
https://stackoverflow.com/questions/58599854
复制相似问题