使用Node SDK将任务发送到Azure批处理作业

时间:2017-11-09 14:43:31

标签: azure azure-batch azure-node-sdk

我正在尝试向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并且它无声地失败。

1 个答案:

答案 0 :(得分:1)

我建议您使用Add task collection API而不是添加任务API,因为集合API在单个API调用中最多可以执行100个任务。这应该允许您将API调用的总数减少100倍。

如果您使用该API并且仍然遇到问题,那么SDK可能存在一些问题,而且并行程度非常高......可能值得尝试删除调用批量并确认您所拥有的代码没有问题(只需将其替换为静态URL上的简单http get?)