Отправка задач в пакетные задания Azure с помощью Node SDK
Я пытаюсь отправить большое количество задач в пакет Azure. Есть три рабочих места и в общей сложности 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 ответ
Я предлагаю использовать API сбора задач Add вместо API Add task, поскольку API сбора может выполнять до 100 задач за один вызов API. Это должно позволить вам сократить общее количество вызовов API в 100 раз.
Если вы используете этот API и все еще испытываете проблемы, возможно, в SDK есть какая-то проблема с действительно высоким уровнем параллелизма... возможно, стоит попытаться удалить вызов Batch и подтвердить, что с кодом, который вы используете, проблем нет есть как есть (просто замените его на простой http получить статический URL может быть?)