Сервер Python отправляет несколько запросов API в TicketMaster, хотя у меня есть ограничитель скорости. Ошибка нарушения спайка ареста

Мой сервер отправляет несколько запросов API для одного и того же запроса. Вот мой код:

      @SOCKETIO.on('retrieve_bookmarks')
@sleep_and_retry
@limits(calls=5, period=1)
def retrieve_bookmarks(data):
    '''This function is for retrieving a
    bookmark from the DB'''
    print("Inside function")
    socket_id = data
    pair = ACTIVE_USER_SOCKET_PAIRS[socket_id]
    user_id = pair['ID']
    event_ids = []
    event_details = []
    bookmarked_events = DB.session.query(Bookmarks).filter_by(clientId=user_id)
    for bookmark in bookmarked_events:
        event_ids.append(bookmark.event_id)
    redurl = 'https://app.ticketmaster.com/discovery/v2/events/'
    for i_d in event_ids:
        with RATE_LIMITER:
            print("Inside loop")
            redurl += i_d
            redurl += '.json?apikey={}'.format(APIKEY)
            req = requests.get(redurl)
            jsontext = req.json()
            event_details.append(jsontext)
            redurl = 'https://app.ticketmaster.com/discovery/v2/events/'
    SOCKETIO.emit('retrieve_bookmarks', event_details, broadcast=False, include_self=True)

Если я проверю консоль при запуске своего приложения, это показывает, что я получаю ошибку нескольких запросов случайным образом для одного идентификатора. Идентификатор, для которого я получаю ошибку, никогда не бывает согласованным. Однако я заметил, что с ограничением в 1 звонок в секунду я никогда не получаю никаких нарушений ареста всплеска. Что-то не так с моим кодом? RATE_LIMITER установлен на максимум 5 вызовов в секунду.

0 ответов

Другие вопросы по тегам