Lambda函数“端点请求超时”

时间:2017-04-04 14:00:03

标签: javascript node.js lambda

我有一个用javascript(node)编写的lambda函数,它接受大的有效负载,分解它,命中多个API,构建响应,然后返回。

代码的要点如下:

'use strict';

let API_KEY = '';

exports.createObjects = (event, context, callback) => {
    let promises = createObject(event);
    Promise.all(promises).then(results => {
        let res = [];
        results.forEach((r) => {
            res.push(r.obj);
        });
        callback(null, {"message" : res});
    })
    .catch((e) =>{
        console.log('Error Creating obj ', e);
    });
};

const createObject = (req) => {
    let objects = req.body.obj;
    let promiseReturn = [];
    if(req.headers.Authorization === undefined)
        return promiseReturn;

    API_KEY = req.headers.Authorization;

    objects.forEach((s) => {
        let newPromise = create(s);
        promiseReturn.push(newPromise);
    });
    return promiseReturn;
};


const create = (object) => {
    return new Promise((resolve, reject) => {
        let chain = createObject(s);
        chain
            .then((res)=>{
                return updateObject(s);
            })
            .then((res)=>{
                return createAttribute1(object.x, object.y);
            })
            .then((res)=>{
                return createAttribute2(object.z, object.q);
            })
            .then((res)=>{
                return createAttribute3(object.s, object.t);
            })          
            .then((res)=>{
                return createAttribute4(object.v, object.c); 
            })  
            .then((finalResponse)=>{
                resolve(finalResponse);
            })  
            .catch((e)=>{
                return rollBack(object);
            })
    });
};

我在处理并发请求时遇到问题。例如,如果我使用10 mb有效负载命中lambda函数它处理得很好,但如果3个用户同时使用10mb有效负载命中lambda函数,我会看到错误"Endpoint request timed out"

使用lambda“并行化”并将其移出Web服务器的最佳方法是什么?我不知道如何处理这个问题...我已经将响应时间从3秒增加到最多30秒,但这只会花费一点时间并且无法解决问题。

0 个答案:

没有答案