тайм-аут выпуск python aws лямбда-копирование данных из s3 в красное смещение - PullRequest
0 голосов
/ 29 июня 2018

Насколько я знаю, AWS лямбда будет считать сбой, если функция займет более 3 секунд

def copy_to_redshift(cur, key):
    sql = '''
    copy <table_name> 
    from '<s3 bucket url>' 
    credentials 'aws_access_key_id=<..>;aws_secret_access_key=<..>' 
    json 'auto'
    ''' % (key)

    cur.execute(sql)

Я использую этот код для загрузки данных из s3 в красное смещение. это заняло более 3 секунд, и я получил этот журнал от лямбда

Task timed out after 3.00 seconds

Как я могу уменьшить эту производительность?

Размер моего файла s3 составляет 7 МБ, в нем 50000 строк.

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

можно ли просто дать sql и завершить функцию?

1 Ответ

0 голосов
/ 29 июня 2018

Максимальное время ожидания AWS Lambda составляет 5 минут. Если ваша обработка не заканчивается в течение 3 секунд, вы можете попытаться постепенно увеличить ее и посмотреть, каким может быть оптимальное время ожидания для вашей лямбды (очевидно, максимум до 5 минут)

Что касается «Как я могу уменьшить эту производительность», вы можете попытаться увеличить объем памяти для вашей лямбды. Эта единственная ручка управления памятью делает 2 вещи

  1. Увеличение памяти (ОЗУ), доступной для вашего Lambda
  2. Увеличение мощности ЦП, доступной для вашего Lambda, пропорционально памяти

Сочетание выше 2 должно, надеюсь, решить проблему

И да, если Lambda выдает команду копирования Redshift до истечения времени ожидания, тогда операция Redshift будет успешной независимо от времени ожидания Lambda

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...