Замедление в API геолокации - PullRequest
0 голосов
/ 20 апреля 2020

Я работаю над проектом, который использует сервис геолокации HERE.

Проект - это, в основном, функция в нашей системе, которая будет маршрутизировать список адресов. Эта маршрутизация будет происходить каждый день и будет иметь как минимум около 7000 точек.

Сегодня мы используем сервис HERE для определения местоположения этих адресов и отправки их в нашу службу маршрутизации. Однако в этой реализации мы сталкиваемся с огромным узким местом: из 7000 точек, которые мы используем для тестирования, мы смогли отправить только около 200 для геолокации, если мы отправим большее количество точек, мы просто не получим больше ответа, ни возврат тайм-аута или что-то в этом роде.

О реализации: мы не отправляем все точки в одном запросе, каждая точка, которая должна быть геокодирована, отправляется в запросе. Мы настроили наше программное обеспечение так, чтобы отправлять только четыре запроса в секунду, полагая, что может быть блок QPS, но нам не удалось решить проблему. Мы подумали также о реализации очереди на массаж, но это может привести к увеличению общего времени геолокации + маршрутизации, что делает решение невыполнимым.

В коде у нас есть массив, в котором хранятся адреса для быть геокодированным, и для каждой позиции массива мы выполняем запрос GET для следующего URL: https://geocoder.ls.hereapi.com/6.2/geocode.json?apiKey=TOKEN&searchtext=ADDRESS

Если вы можете помочь мне найти решение.

Ответы [ 2 ]

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

Для большого количества геокодов вы можете использовать sh API Batch Geocoder API:

https://developer.here.com/documentation/batch-geocoder/dev_guide/topics/quick-start-batch-geocode.html

Я не могу повторить проблему с более чем 200 запросов Geocoder подряд, поэтому нам, возможно, потребуется увидеть некоторый код, прежде чем мы сможем помочь в дальнейшем.

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

Вы пользуетесь нашим сервисом freemium? просто чтобы вы знали, что наша версия API геокодера 6.2 больше не поддерживает разработку новых функций, и, следовательно, если вы все еще используете вариант использования. Пожалуйста, попробуйте переключиться на V7. Вы имеете в виду, что вы не можете отправить целые 7000 адресов и получить ответ даже порциями. Это также может быть связано с тем, что Linux система имеет ограниченное количество сетевых подключений к пулу в один и тот же момент. Попробуйте отправить запросы от некоторой домашней конечной точки (не находящейся за брандмауэром) и от Windows system

...