контекст
Я хочу запустить AWS Lambda, вызвать конечную точку (огонь и забыть), а затем остановить Лямбду - все это время конечная точка удаляется счастливо на нее.
попытки
1.
Использование тайм-аута, например
try:
requests.get(url, timeout=0.001)
except requests.exceptions.ReadTimeout:
...
2.
Использование асинхронного вызова с помощью grequest:
import grequests
...
def handler(event, context):
try:
...
req = grequests.get(url)
grequests.send(req, grequests.Pool(1))
return {
'statusCode': 200,
'body': "Lambda done"
}
except Exception:
logger.exception('Error while running lambda')
raise
Эти запросы, похоже, не доходят до API, это почти похоже на отмену запроса.
Любые идеи почему?
Вопрос
Как Lambda может вызывать URL-адрес, который занимает много времени? Благодарю.
Каждому, кто это читает: я исправил свою проблему, используя AWS Batch.
Вы должны увеличить таймаут в своей функции. В зависимости от того, как вы определили свою функцию, вы можете увеличить тайм-аут по умолчанию 300 секунд на странице функций или внутри вашего сценария облачности.
Тайм-аут, определенный внутри вашей функции, не влияет на функциональность лямбда. AWS Lambda убьет вашу функцию через 300 секунд независимо от тайм-аута, определенного внутри вашего скрипта. См. Https://docs.aws.amazon.com/lambda/latest/dg/limits.html.