AWS Лямбда-таймауты при запросе целого rnet ресурса - PullRequest
0 голосов
/ 14 апреля 2020

Я делаю небольшое приложение, использующее сервер. Я просто пишу несколько веб-страниц в aws лямбде, чтобы получить некоторые данные с помощью шлюза API. Проблема в том, что моя лямбда возвращает тайм-аут (просто чтобы изменить тайм-аут на 30 с), и я понятия не имею, как отладить это в контексте без сервера.

Вот моя лямбда:

import json
from lambda_decorators import cors_headers
import requests


@cors_headers
def handler(event, context):
    print("Was called with params : " + str(event))
    teamId = event["queryStringParameters"]['team_id']
    print(teamId)
    body = callNbaStatsApi(teamId)
    return {
        'statusCode': 200,
        'body': body
    }


def callNbaStatsApi(teamId):
    print("Start callNbaStatsApi")
    nbaStatsUrl = 'https://stats.nba.com/stats/teamdashboardbygeneralsplits?DateFrom=&DateTo=&GameSegment=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=PerGame&Period=0&PlusMinus=N&Rank=N&Season={0}&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&Split=general&TeamID={1}&VsConference=&VsDivision='
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0',
        'x-nba-stats-origin': 'stats',
        'Referer': 'https://stats.nba.com/',
    }
    url = nbaStatsUrl.format('2019-20', teamId)
    print(url)
    r = requests.get(url, headers=headers)
    print(r)
    print("End callNbaStatsApi")
    return r.json()


if __name__ == "__main__":
    print(callNbaStatsApi('1610612749'))

Я заметил две вещи:

  • При вызове сценария python на на моем ноутбуке работает запрос и выводятся данные nba.
  • Когда запрос переходит к http://www.google.com, он работает в среде aws lambda.

При всем этом, я полагаю, что-то делает https://stats.nba.com недоступным, но я не знаю, что.

Кроме того, поскольку это может быть проблемой, у меня нет Конфигурация VP C на моей лямбде

Реальный вопрос здесь прост: как бы вы работали, чтобы отладить такое поведение?

Спасибо за ваше время!

1 Ответ

0 голосов
/ 14 апреля 2020

Если вы просто заинтересованы в отладке лямбда-сценариев, лучше всего начать с регистрации в облачных часах. Через консоль вы можете go прямо в сервис и найти соответствующую лямбду или просто go на своей лямбде, щелкнуть по вкладке мониторинга и выбрать «просмотреть журналы в облачном хранилище».

После того, как вы сможете просмотреть свои журналы, вы сможете включить соответствующую обработку ошибок в свой сценарий и изолировать ошибку и в какой момент она истечет.

Ваш сценарий выглядит нормально, без его тестирования, поэтому будет зависеть, хватит ли вашей упаковки вашей лямбды памяти и допустимо ли событие, которое вы передаете?

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