Ниже, если в моем коде оркестратора я использую комбинацию цепочек и разветвления / разветвления
const df = require("durable-functions");
const geocodeActivity = "getActualData";
const getDataActivity = "getDataFromDB";
const ld = require('lodash')
module.exports = df.orchestrator(function* (context) {
const outputs = [];
const parallelTasks = [];
try {
let payload = context.bindingData.input;
payload.dataType = "truth";
let truthData = yield context.df.callActivity(getDataActivity, payload);
for (const data of truthData) {
const truthDataObj = payload;
truthDataObj.data = data;
//console.log("ORCHESTRATOR: " + JSON.stringify(truthDataObj));
parallelTasks.push(context.df.callActivity(geocodeActivity, ld.cloneDeep(truthDataObj)));
}
let actualData = yield context.df.Task.all(parallelTasks);
let uploadDataInfo = payload;
uploadDataInfo['actual_data'] = actualData;
let uploadedCsv = yield context.df.callActivity("uploadActualData", uploadDataInfo);
if (uploadedCsv == false || uploadedCsv == null || uploadedCsv === undefined) {
outputs.push("failed");
} else {
outputs.push(uploadedCsv);
}
} catch (err) {
context.log(JSON.stringify(err));
outputs.push('-1');
}
return outputs;
У меня ниже наблюдений
Много раз оркестровщики застревают в работе
1-е действие, которое вызывается для getDataActivity, возвращает запись из БД, которая может доходить до миллиона в строках, а каждая строка содержит по меньшей мере 20 столбцов
Затем я перебираю каждую запись и выполняю некоторые действия
Но я много раз замечал, что он зависает при работе или иногда перезапускается сервер, на котором работает оркестратор
Это как-то связано с огромным количеством данных, которые возвращаются из"GetDataActivity"? Если да, что вы посоветуете здесь, как я могу попытаться решить эту проблему