Как я могу сделать несколько запросов HTTP RequestResponse к одной и той же долго выполняющейся функции AWS Lambda из Python? - PullRequest
0 голосов
/ 09 марта 2019

Я понимаю, что могу синхронно вызывать лямбда-функцию AWS и читать результаты:

data = invoke_response['Payload'].read()

Как мне продолжать подключаться к одному и тому же длительному вызову лямбда-функции, чтобы получать частичные результаты до его завершения?

1 Ответ

0 голосов
/ 12 марта 2019

Короче говоря, вы не можете использовать лямбда-клиент boto3 в вашем примере. Однако вы можете отслеживать ваши журналы CloudWatch.

1) Разместите частичные результаты, которые вы хотели бы видеть, в регистраторе внутри вашей лямбда-функции.

import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_logging_handler(event, context):
    results = "something half done"
    logger.info('MY PARTIAL RESULTS'.format(results))
    logger.error('something went wrong')
    return 'Hello from Lambda!'  

2) Запустите свою лямбду асинхронно

response = client.invoke(
    FunctionName='string',
    InvocationType='Event' # To invoke asynchronously InvocationType must be Event,
    LogType='None'|'Tail',
    ClientContext='string',
    Payload=b'bytes'|file,
    Qualifier='string'
)

3) Создайте цикл, который вызывает GetLogEvents в течение указанного промежутка времени для потока журнала, связанного с вашей лямбдой.

Request Syntax:
{
   "endTime": number,
   "limit": number,
   "logGroupName": "string",
   "logStreamName": "string",
   "nextToken": "string",
   "startFromHead": boolean,
   "startTime": number
}

4) Извлечь частичные результаты из ответа потока журнала

Response Syntax:
{
   "events": [ 
      { 
         "ingestionTime": number,
         "message": "string", # The partial response you posted will be seen here
         "timestamp": number
      }
   ],
   "nextBackwardToken": "string",
   "nextForwardToken": "string"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...