我正在尝试向Azure Batch发送大量任务。这三项工作共有67,000个工作岗位。
当我只发送一些任务时,一切正常,只要我打开它发送完整列表它似乎就会失败,但没有任何有用的错误消息。总数是否有某种限制?或者我发送它们的速度?我正在使用Azure Functions,Node SDK并承诺异步添加任务。
async.each(tasks, function(task, callback) {
var taskID = task.id + '_process';
var config = {
id: taskID,
displayName: 'Render portion ' + task.id + ' in job ' + task.job.id,
commandLine: "python3 main.py '" + JSON.stringify(task) + "'"
};
batchClient.task.add(task.job.id, config).then(function(result) {
context.log('Task for portion : ' + task.id + ' submitted successfully');
callback();
}).catch(function(error){
context.log('Task failed to be added');
callbacK(error);
});
}, function(error) {
if( error ) {
context.log('Error adding task.');
context.res = { body: error };
context.done();
} else {
context.log('All tasks have been queued successfully');
context.res = { body: 'All tasks have been queued successfully' };
context.done();
}
});
此时,我很高兴甚至得到一个错误,如果只是给我一些事情继续下去。我已经尝试发送10个任务,它运行正常,发送65,000并且它无声地失败。
答案 0 :(得分:1)
我建议您使用Add task collection API而不是添加任务API,因为集合API在单个API调用中最多可以执行100个任务。这应该允许您将API调用的总数减少100倍。
如果您使用该API并且仍然遇到问题,那么SDK可能存在一些问题,而且并行程度非常高......可能值得尝试删除调用批量并确认您所拥有的代码没有问题(只需将其替换为静态URL上的简单http get?)