После публикации сервисов маршрутизации из набора сетевых данных, настроенного на текущий трафик, важно обеспечить регулярное обновление данных о трафике, используемых этими сервисами. Это можно сделать, следуя рабочему процессу, описанному ниже:
Вам необходимо настроить скрипт Python для запуска каждые две минуты с помощью crontab. Эта встроенная утилита командной строки позволяет пользователям планировать автоматическое выполнение задач с заданными интервалами. Скрипт Python, настроенный для запуска через crontab, требует следующих предварительных условий:
- Вы должны настроить crontab для пользователя операционной системы, указанного в качестве учетной записи ArcGIS Server.
- Для работы скрипта Python требуется Python версии 3.9 или более новой. Важно использовать версию Python, которая не входит в комплект поставки ArcGIS Server; вместо этого вы должны использовать версию Python, которая изначально доступна в вашей операционной системе.
- В среде Python должен быть установлен модуль requests.
Обновляйте текущие данные о дорожном движении каждые две минуты, запустив скрипт Python через crontab. В приведенном примере подразумевается, что ArcGIS Server установлен в /arcgis/server.
(crontab -l; echo "*/2 * * * * /usr/bin/python3 /arcgis/server/framework/runtime/ArcGIS/Resources/ArcToolBox/Services/routingservices/update_traffic_cache_scheduler.py >/dev/null 2>&1") | crontab -Примечание:
Описанные выше действия должны быть выполнены на каждом компьютере на сайте ArcGIS Server из нескольких компьютеров.
Скрипт Python генерирует файл журнала с именем update_traffic_cache_scheduler.log, который хранится в папке по умолчанию, куда ArcGIS Server записывает свои журналы, такие как <ArcGIS Server installation directory>/arcgis/server/usr/logs. Вы можете проверить этот файл журнала, чтобы определить, возникли ли какие-либо ошибки во время выполнения скрипта.
Проверка статуса данных о дорожном движении в реальном времени
После того как вы настроили регулярное обновление данных о дорожном движении в режиме реального времени, вы можете проверить, успешно ли обновляются данные, запустив инструмент GetLiveTrafficStatus в сервисе геообработки NetworkAnalysisUtilities. Этот сервис доступен в той же папке, где были опубликованы другие сервисы маршрутизации. Например, если сервисы маршрутизации были опубликованы в папке сервиса с именем Routing, URL-адрес инструмента GetLiveTrafficStatus будет https://machine.example.com/webadaptorname/rest/services/Routing/NetworkAnalysisUtilities/GPServer/GetLiveTrafficStatus. Выходные данные GetLiveTrafficStatus могут быть использованы для проверки обновления данных о дорожном движении.
Пример выходных данных инструмента GetLiveTrafficStatus показывает, что последнее обновление было выполнено успешно, т.к. isLastUpdateSuccessful равно true. Если во время последнего обновления возникли ошибки, isLastUpdateSuccessful задается равным false, и причины сбоя возвращаются как часть параметра lastUpdatedMessages.
{
"results": [
{
"paramName": "status",
"dataType": "GPString",
"value": {
"cachePath": "C:\\NA\\RoutingServices\\traffic-cache\\openlr.3a795f46cf77473fb1dc606ef73a2cb5",
"isLastUpdateSuccessful": true,
"isUpdateInProgress": false,
"roadClosuresDataAvailable": true,
"roadClosuresDataSize": 64427318,
"speedDataAvailable": true,
"speedsDataSize": 3977019303,
"tempDataSize": 365970076,
"trafficCacheStatus": {
"endTimeWindow": 1744065360000,
"lastCreatedFileNames": [
"speeds.20250407132800.1.ff.dat",
"speeds.20250407213200.1.nff.dat",
"road_closures.20250407213200.1.dat",
"speeds.20250407213200.info.dat",
"speeds.20250407213600.info.dat"
],
"lastDecodingElapsedTime": 0,
"lastRemovedFileNames": [
"speeds.20250407173200.info.dat",
"road_closures.20250407173200.1.dat"
],
"lastUpdatedElapsedTime": 11582,
"lastUpdatedMessages": [
],
"lastUpdatedTime": 1744062137882,
"remainingSpeedLocationsToMatch": 0,
"roadClosureLocationsCount": 23153,
"selectedTrafficDataRegions": [
"CAN",
"MEX",
"USA_N",
"USA_SW",
"USA_SE",
"USA_M"
],
"speedLocationsCount": 1468719,
"startTimeWindow": 1744047330000
}
}
}
],
"messages": [
]
}