PYTHON: слои направлений Google API дают OVER_QUERY_LIMIT при отображении маршрута между несколькими точками после 10 запросов - PullRequest
0 голосов
/ 19 апреля 2020

Я работаю над проектом по отображению маршрутов с помощью API-интерфейса Google Map Distance между точками A и B, поступающими из кадра данных, я получаю сообщение об ошибке "[слой направлений] Вы отправили слишком много запросов о направлении. Подождите пока ваша квота не пополнится ". Это происходит только тогда, когда количество запросов превышает 10. ХОТЯТ . Я добавил задержку в 1 секунду после 10-го запроса, но не повезло! Я также пытался отправлять запросы партиями по 10 штук, но это тоже не сработало! Более того, я прочитал документацию по API

У меня есть настройка биллинга, хотя я на бесплатной пробной версии, по-видимому, у меня все еще есть кредит на сумму более 300 долларов.

Вот симуляция моего кода, очень простая, для вашего доброго совета

import gmaps
import time

dict_k ={}
dict_k['st_coordinates'] =[ '24.760669, 54.704782','25.168596, 56.355549','25.004274, 55.063742','25.000252, 55.060932',
                            '24.872900, 55.137325','24.537609, 54.383664','24.050339, 53.470903','24.211435, 55.424501',
                            '24.196804, 55.855923','24.308309, 54.675861','24.988239, 55.104435','24.985047, 55.071542',
                            '24.306433, 54.490205','25.000252, 55.060932','24.536064, 54.383048'  ] 

dict_k['en_coordinates'] =[ '24.454036, 54.376656','24.130453, 55.801786','23.931339, 53.045892','24.171,54.408',
                            '24.454036, 54.376656','24.130453, 55.801786','23.931339, 53.045892','24.171,54.408',
                            '24.454036, 54.376656','24.130453, 55.801786','23.931339, 53.045892','24.171,54.408',
                            '24.454036, 54.376656','24.130453, 55.801786','23.931339, 53.045892']
key = 'AIzA...............'
dataframe =  pd.DataFrame.from_dict(dict_k) 


def draw_map (dataframe,key):
    gmaps.configure(key)
    fig = gmaps.figure()

    for i in range(len(dataframe)):

        start_point = eval(dataframe['st_coordinates'].iloc[i] )
        end_point =   eval(dataframe['en_coordinates'].iloc[i] )

        layer = gmaps.directions_layer(start_point, end_point)
        fig.add_layer(layer)

        if i >10:
            time.sleep(1)

    return fig

df = draw_map(dataframe,key)
df

1 Ответ

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

Вот ссылка на руководство по API. Изложено довольно ясно. https://developers.google.com/maps/premium/previous-licenses/articles/usage-limits

Вы можете превысить ограничения на использование веб-служб Google Maps Platform на:

  1. Отправлять слишком много запросов в день.
  2. Слишком быстрая отправка запросов, т. Е. Слишком много запросов в секунду.
  3. Слишком быстрая отправка запросов на слишком длительный срок или иное злоупотребление веб-службой.
  4. Превышение других лимитов использования, например, баллов за запрос в Повышении API. Превышены лимиты использования. Если вы превысите лимиты использования, в качестве ответа вы получите код состояния OVER_QUERY_LIMIT.

Это означает, что веб-служба перестанет предоставлять нормальные ответы и переключится на возврат только кода состояния OVER_QUERY_LIMIT до тех пор, пока использование разрешено снова. Это может произойти:

  1. В течение нескольких секунд, если ошибка была получена из-за того, что ваше приложение отправляло слишком много запросов в секунду.
  2. В течение следующих 24 часов, если ошибка была получена потому что ваша заявка отправила слишком много запросов в день. Ежедневные квоты сбрасываются в полночь, время ожидания по пафифи c.

После получения ответа с кодом состояния OVER_QUERY_LIMIT ваше приложение должно определить, какой лимит использования был превышен. Это можно сделать, сделав паузу на 2 секунды и повторно отправив тот же запрос. Если код состояния по-прежнему OVER_QUERY_LIMIT, ваше приложение отправляет слишком много запросов в день. В противном случае ваше приложение отправляет слишком много запросов в секунду.

...