У меня есть приложение Node, в котором есть клиент Gremlin:
var Gremlin = require('gremlin');
const client = Gremlin.createClient(
443,
config.endpoint,
{
"session": false,
"ssl": true,
"user": `/dbs/${config.database}/colls/${config.collection}`,
"password": config.primaryKey
}
);
С помощью которого я затем вызывал CosmoDB для добавления некоторых записей, используя:
async.forEach(pData, function (data, innercallback) {
if (data.type == 'Full'){
client.execute("g.addV('test').property('id', \"" + data.$.id + "\")", {}, innercallback);
} else {
innercallback(null);
}
}, outercallback);
Однако на моей стороне Azure существует ограничение в 400 запросов в секунду, и впоследствии я получаю сообщение об ошибке:
ExceptionType : RequestRateTooLargeException
ExceptionMessage : Message: {"Errors":["Request rate is large"]}
Есть ли у кого-нибудь идеи о том, как я могу ограничить число запросов в секунду, не прибегая к расширению Azure (поскольку это стоит дороже :))
Дополнительно:
Я пытался использовать
async.forEachLimit(pData, 400, function (data, innercallback) {
if (data.type == 'Full'){
client.execute("g.addV('test').property('id', \"" + data.$.id + "\")", {}, innercallback);
} else {
innercallback(null);
}
}, outercallback);
Однако, если вы продолжаете видеть RangeError: Maximum call stack size exceeded
, если оно слишком велико, в противном случае, если я уменьшу, я получу ту же самую частоту запросов, слишком большое исключение.
Спасибо.