У меня есть следующий код в aws
lambda
, чтобы получить ответ от API, пока статус не будет завершен. Я использовал ThreadPoolExecutor
из concurrent.futures
.
Вот пример кода.
import requests
import json
import concurrent.futures
def copy_url(headers,data):
collectionStatus = 'INITIATED'
retries = 0
print(" The data to be copied is ",data)
while (collectionStatus != 'COMPLETED' or retries <= 50):
r = requests.post(
url=URL,
headers=headers,
data=json.dumps(data))
final_status= r.json().get('status').pop().get('status')
retries += 1
print(" The collection status is",final_status)
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
future = executor.submit(copy_url,headers,data)
return_value = future.result()
Я уже реализовал это, используя обычные потоки в python. Однако, так как я хотел получить возвращаемое значение из потока, попытался реализовать это. Хотя это прекрасно работает в pycharm
, оно всегда выдает ошибку времени ожидания в aws
lambda
.
Может кто-нибудь объяснить, почему это происходит только в aws-lambda
?
Примечание: Я уже пытался увеличить значение времени ожидания lambda
. Это происходит только при реализации threadpoolexecutor
. Когда я закомментирую этот код, он работает нормально. Также он работает нормально с обычной python реализацией потока