【发布时间】:2018-06-29 16:05:54
【问题描述】:
我想使用计时器触发的 Azure 函数来生成多个 axios 后调用,以更改多个 CosmosDB 集合的吞吐量设置。
根据日志,以下代码将启动(即出现“[Info] Function started”消息),但随后将不再出现日志记录,并且该函数将以状态码结束 202 接受。
我怀疑问题是由我处理 axios 承诺的方式引起的,但经过多次尝试后,我转向 Stackoverflow 寻求帮助。
任何帮助将不胜感激。
const axios = require("axios");
const azure = require("azure-storage");
const functionURL = "https://<redacted>.azurewebsites.net/api/ChangeRU?code=<redacted>"
// Update Offer for Collection
function updateOffer_for_Collection_RESTCall(
environment,
database,
collection,
newRU
) {
context.log(`\nUpdate throughput for collection (${collection}) in database (${database}) of environment (${environment}) to: ${newRU}`);
// Execute REST call
const url = functionURL + "&env=" + environment + "&database=" + database + "&collection=" + collection + "&ru=" + newRU;
context.log(`url = ${url}`);
return url;
}
module.exports = function (context, myTimer) {
var timeStamp = new Date().toISOString();
context.log('Scale down job started:', timeStamp);
if (myTimer.isPastDue) {
context.log('Scale down job is running late!');
}
var collectionTableService = azure.createTableService("<storageaccount>", "<redacted>");
const query = new azure.TableQuery()
.top(2)
.where('PartitionKey eq ?', 'DBCollections');
context.log('Query created...');
collectionTableService.queryEntities('DBCollections', query, null, function (error, result, response) {
if (!error) {
// result.entries contains entities matching the query
const collections = result.entries;
let axiosArray = [];
for (let collection of collections) {
context.log("Collection: " + JSON.stringify(collection) + "\n");
// Process collection
let url = updateOffer_for_Collection_RESTCall(collection.environment._, collection.database._, collection.collection._, 400);
let newPromise = axios({
method: 'post',
url: url,
data: {}
});
axiosArray.push(newPromise);
};
axios
.all(axiosArray)
.then(
function (results) {
let temp = results.map(r => r.data);
context.log('submitted all axios calls');
})
.catch(error => { });
context.done();
} else {
context.log('Error retrieving records from table DBCollections: ' + error);
context.done();
}
});
};
【问题讨论】:
标签: javascript node.js azure azure-functions