def do_execute(*args): # set the invocation time in milliseconds invocation_time = int(time.time() * 1000) # start the execution try: result, log_output = self._execute(func_arn, func_details, event, context, version) except Exception as e: if asynchronous: if get_from_event(event, 'eventSource') == EVENT_SOURCE_SQS: sqs_queue_arn = get_from_event(event, 'eventSourceARN') if sqs_queue_arn: # event source is SQS, send event back to dead letter queue sqs_error_to_dead_letter_queue( sqs_queue_arn, event, e) else: # event source is not SQS, send back to lambda dead letter lambda_error_to_dead_letter_queue( func_details, event, e) raise e finally: self.function_invoke_times[func_arn] = invocation_time # forward log output to cloudwatch logs self._store_logs(func_details, log_output, invocation_time) # return final result return result, log_output
def _run(func_arn=None): # set the invocation time in milliseconds invocation_time = int(time.time() * 1000) # start the execution raised_error = None result = None dlq_sent = None try: result = self._execute(func_arn, func_details, event, context, version) except Exception as e: raised_error = e if asynchronous: if get_from_event(event, 'eventSource') == EVENT_SOURCE_SQS: sqs_queue_arn = get_from_event( event, 'eventSourceARN') if sqs_queue_arn: # event source is SQS, send event back to dead letter queue dlq_sent = sqs_error_to_dead_letter_queue( sqs_queue_arn, event, e) else: # event source is not SQS, send back to lambda dead letter queue lambda_error_to_dead_letter_queue( func_details, event, e) raise e finally: self.function_invoke_times[func_arn] = invocation_time callback and callback(result, func_arn, event, error=raised_error, dlq_sent=dlq_sent) # return final result return result
def do_execute(*args): # set the invocation time in milliseconds invocation_time = int(time.time() * 1000) # start the execution try: result, log_output = self._execute(func_arn, func_details, event, context, version) except Exception as e: if asynchronous: lambda_error_to_dead_letter_queue(func_details, event, e) raise e finally: self.function_invoke_times[func_arn] = invocation_time # forward log output to cloudwatch logs self._store_logs(func_details, log_output, invocation_time) # return final result return result, log_output