복붙노트

[REDIS] AWS 람다와 레디 스 클라이언트. 이유는 콜백을 호출 할 수 없습니다?

REDIS

AWS 람다와 레디 스 클라이언트. 이유는 콜백을 호출 할 수 없습니다?

나는 레디 스를 사용하는 AWS 람다 함수를 작성하려고 해요. 나는 아래의 코드를 실행하면 :

'use strict'

function handler (data, context, callback) {
  const redis = require("redis")
  const _ = require("lodash")
  console.log('before client')
  const client = redis.createClient({
    url: 'redis://cache-url.euw1.cache.amazonaws.com:6379',
  })
  console.log('after client')
  callback(null, {status: 'result'})
  console.log('after callback')
}

exports.handler = handler

이 같은 대답을 :

{
  "errorMessage": "2016-09-20T15:22:27.301Z 07d24e0b-7f46-11e6-85e9-e5f48906c0da Task timed out after 3.00 seconds"
}

및 로그는 다음과 같다 :


17:22:24
START RequestId: 07d24e0b-7f46-11e6-85e9-e5f48906c0da Version: $LATEST

17:22:26
2016-09-20T15:22:26.014Z    07d24e0b-7f46-11e6-85e9-e5f48906c0da    before client

17:22:26
2016-09-20T15:22:26.134Z    07d24e0b-7f46-11e6-85e9-e5f48906c0da    after client

17:22:26
2016-09-20T15:22:26.135Z    07d24e0b-7f46-11e6-85e9-e5f48906c0da    after callback

17:22:27
END RequestId: 07d24e0b-7f46-11e6-85e9-e5f48906c0da

17:22:27
REPORT RequestId: 07d24e0b-7f46-11e6-85e9-e5f48906c0da  Duration: 3001.81 ms    Billed Duration: 3000 ms Memory Size: 128 MB    Max Memory Used: 24 MB

17:22:27
2016-09-20T15:22:27.301Z 07d24e0b-7f46-11e6-85e9-e5f48906c0da Task timed out after 3.00 seconds

이는 IMHO, 콜백이 호출하지만 아무 일도하지 않았 음을 의미합니다.

나는 클라이언트의 초기화를 제거하면 나는 적절한 응답을 참조하십시오.

어떤 아이디어?

해결법

  1. ==============================

    1.공식 문서에서 :

    공식 문서에서 :

    당신이 콜백을 호출하지만 람다 함수 호출이 종료되지 않기 때문에, 당신이 여전히 이벤트 루프에 뭔가가 나타납니다. 귀하의 기능은 정말 레디 스 연결을 만드는 제외하고 아무것도하지 않습니다. 난 당신이 그것으로 완료하면 이벤트 루프를 취소하기 위해, 레디 스 연결을 닫을 필요가 완료 될 때까지 람다 호출을 허용 같은데요.

  2. from https://stackoverflow.com/questions/39598158/aws-lambda-and-redis-client-why-cant-i-call-callback by cc-by-sa and MIT license