2016-10-04 3 views
0

내 애플리케이션에 AWS 람다를 사용하여 약속을 사용하여 Dynamo에서 여러 레코드를 가져옵니다. 처음에는 context.callbackWaitsForEmptyEventLoop = true로 설정 했으므로 핸들러는 약속이 해결 될 때까지 대기합니다. 약속이 해결되면 context.callbackWaitsForEmptyEventLoop = false로 설정하고 callback (null)을 호출합니다.이전 이벤트의 큐를 실행중인 AWS 람다 함수

약속이 해결 된 후에 callbackWaitsForEmptyEventLoop = false를 설정하지 않으면 콜백 (null)을 호출 한 후에도 함수가 시간 초과됩니다 (일부 라이브러리 함수는 여전히 이벤트 대기열에있을 수 있음).

문제는 런타임이 다시 다음 번에 사용되는 경우, 다시 시작하지 않고 이벤트 대기열의 이전에 남은 기능이 다시 시작되는 것입니다. 이전 이벤트 큐를 비우는 방법이 있습니까?

context.callbackWaitsForEmptyEventLoop = true; 

allPromises = getDatafromDynamo(); 
allPromises.then(results => { 
    console.log('Results are', JSON.stringify(results)); 
    context.callbackWaitsForEmptyEventLoop = false; 
    callback(null, 'DONE'); 
    return; 
}).catch((err) => { 
    console.log("Error occurred", err); 
    context.callbackWaitsForEmptyEventLoop = false; 
    callback(err); 
}); 

답변

0

어디서나 전역 상태가 유지되지 않도록하여이 질문을 해결했습니다. Lambda는 다음 요청에 대해 실행중인 프로세스를 사용합니다.