Я никогда раньше не писал рекурсивный python скрипт. Я привык разбивать монолитную c функцию на суб AWS лямбда-функции. Однако этот конкретный скрипт, над которым я работаю, сложно разбить на более мелкие функции.
Вот код, который я сейчас использую для контекста. Я использую один запрос API для возврата списка объектов в таблице.
url_pega_EEvisa = requests.get('https://cloud.xxxx.com:443/prweb/api/v1/data/D_pxCaseList?caseClass=xx-xx-xx-xx', auth=(username, password))
pega_EEvisa_raw = url_pega_EEvisa.json()
pega_EEvisa = pega_EEvisa_raw['pxResults']
Это возвращает каждый объект (первичный ключ) в определенной таблице в виде списка. Например,
['XX-XXSALES-WORK%20PO-1', 'XX-XXSALES-WORK%20PO-10', 'XX-XXSALES-WORK%20PO-100', 'XX-XXSALES-WORK%20PO-101', 'XX-XXSALES-WORK%20PO-102', 'XX-XXSALES-WORK%20PO-103', 'XX-XXSALES-WORK%20PO-104', 'XX-XXSALES-WORK%20PO-105', 'XX-XXSALES-WORK%20PO-106', 'XX-XXSALES-WORK%20PO-107']
Затем я использую этот список для заполнения большего количества запросов на получение, используя for для l oop, который затем собирает все данные для каждого объекта.
for t in caseid:
url = requests.get(('https://cloud.xxxx.com:443/prweb/api/v1/cases/{}'.format(t)), auth=(username, password)).json()
data.append(url)
Этот конкретный Лямбда-функция занимает около 15 минут, что является пределом для одной AWS Лямбда-функции. В идеале я хотел бы разделить список на более мелкие части и запустить тот же процесс. Я с трудом отмечаю точку, в которой он работал в последний раз до сбоя, и передаю эту информацию следующей функции.
Любая помощь приветствуется!