所以我有一个类似这样的python处理程序:

redisClinet = redis.StrictRedis(host = environ['REDIS_ENDPOINT'], port=6379, db=0)

def handler(event, context):
    // some logic

    lastEvent = redisClinet.get('lastEvent')

    // rest of the logic

我有:
lambda vpc正确设置为与elasticache集群在同一个vpc上,安全组允许每次入站/出站
lambda执行角色可以访问所有资源的所有操作,包括vpc、elasticache等。
当我在自己的机器上本地运行该函数时,它会很快正确退出,因为Elasticache显然拒绝我机器的IP地址,但问题是,我在Lambda上运行该函数时甚至看不到错误消息,看不到发生了什么事。
实际问题是:除了lambda无法连接到redis的原因之外,如何让lambda正确地记录错误并在错误时退出,而不是等待60秒并超时?

最佳答案

提供的信息较少。
lambda可能由于redis连接而超时。您可以增加lambda超时(必须大于redis client中设置的超时)或在redis py中设置自己的连接超时值。
我认为您还可以将redis连接部分移动到lambda处理程序中并传递它。放置一个try catch并在catch中打印日志。
像这样的:

def handler(event, context):
    try:
       redisClinet = redis.StrictRedis(host = environ['REDIS_ENDPOINT'], port=6379, db=0)
    except Exception as e:
        print e
    // some logic
    lastEvent = redisClinet.get('lastEvent')
    // rest of the logic

关于python - Python lambda函数在失败的弹性连接上超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48492495/

10-12 00:38
查看更多