Запуск и остановка картографических сервисов ArcGIS Server с использованием Python?

10

Можно ли программно останавливать и запускать картографические сервисы ArcGIS Server с помощью Python?

Джефф Берри
источник
Это просто запрос REST.
Винс
Спасибо. Но мне нужно написать логин и пароль в моем скрипте .py, любая идея, как этого избежать. Например, я могу использовать файл .ags?)
Лора
К сожалению нет; они оставили большую дыру в дизайне, когда не смогли предоставить функцию для преобразования .agsфайла в токен. Вы можете попытаться подключиться с помощью сертификата (файла PEM), хотя для этого требуется нечто большее, чем простой ванильный HTTP.
Винс

Ответы:

7

В ArcGIS 10.0 для отдельных сервисов, таких как командная строка для поддержки ArcIMS, есть инструмент командной строки, который вы можете загрузить из галереи кодов ( AGSSOM ), который дает вам ядро ​​основных областей, но нет детального «специфичного для сервиса» 'контроль уровня, который вы можете использовать в данный момент для запуска / остановки / обновления / добавления / удаления сервисов AGS.

На ideas.arcgis.com есть несколько мест с просьбами улучшить управление услугами из более автоматизированного местоположения.

DEWright
источник
Ссылка на ArcGIS Ideas не работает. В любом случае, возможно, этот ответ может быть обновлен до 10.7.
PolyGeo
12

Для тех, кто использует ArcGIS 10.0 и заинтересован в использовании AGSSOM в соответствии с рекомендациями DE Wright, я собрал следующий код. Это остановит все службы, позволяющие вам выполнить необходимые задачи базы геоданных, а затем перезапустит ранее запущенные службы.

import os, subprocess

#Get list of currently running map services
stream = os.popen('D:\GIS\Admin\AGSSOMv10.0\AGSSOM.exe -list')
mapservices = stream.readlines()
lstStarted = []

for item in mapservices:
    itemSplit = item.split(',')
    if len(itemSplit) > 1:
        if itemSplit[1].find("Started.") > -1:
            lstStarted.append(itemSplit[0])

#Shutdown all map services
subprocess.call(['D:\GIS\Admin\AGSSOMv10.0\AGSSOM.exe', '-x', '*all*'])

##...Perfom geodatabase tasks here

#Restart previously running map services
for mapservice in lstStarted:
    subprocess.call(['D:\GIS\Admin\AGSSOMv10.0\AGSSOM.exe', '-s', mapservice])
Джефф Берри
источник
4

Начиная с ArcGIS Server 10.3, несколько утилит командной строки на основе Python поставляются в комплекте с ArcGIS server.

В соответствии с документацией Esri они обычно устанавливаются здесь:

C:\Program Files\ArcGIS\Server\tools\admin

Управления коммунальных услуг отлично подходит для запуска, остановки или удаления услуги:

python manageservice.py -u admin -p admin -s http://gisserver.domain.com:6080 -n Beirut/Parcels -o start

Чарли Хофманн
источник
3

В том же духе, что и в своем ответе Джефф Берри, я написал небольшую функцию, которая будет управлять картографическими сервисами ArcGIS Server 10.0 с помощью инструментов AGSSOM.

В моем случае я звоню в сервис по отдельности по имени, останавливая и запуская по одному.

import subprocess

def manageMapServices(command, svc, svcType):
    PathToAGSSOM = r"C:\Windows\AGSSOMUtils\AGSSOM"
    server = "AGSSOM"
    p = subprocess.Popen(PathToAGSSOM + " " + server + " " + command + " " + svc + " " + svcType)
    p.wait()

Затем вы можете вызвать службу по имени, используя -x для остановки и -s для запуска:

manageMapServices("-s", "Folder/Service", "MapServer")
Тимоти Майкл
источник
2

Для ArcGIS 10.7 и некоторых более ранних версий полный набор скриптов Python для остановки, запуска, удаления и множество других вещей можно найти здесь: http://www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340 (в нем также есть .exe, если вам абсолютно необходим полный исполняемый файл)

Или погрузитесь в справку и прочитайте о многих параметрах (из командной строки, Python API, фрагменты кода) здесь: https://enterprise.arcgis.com/en/server/latest/administer/linux/scripting-arcgis -server-administration.htm

Однако все эти пункты включены в качестве других ответов в вопросе, на который вы ссылались. AGSSOM - это утилита .net, написанная для сервера 10.0 и старше. Была выпущена версия 10.1 и новее, но она так и не завоевала популярность, поскольку вам не требовался тяжелый код на c # / vb для взаимодействия с сервером. Сервер 10.1+ был выпущен с хорошо структурированным REST API, позволяющим использовать языки высокого уровня, такие как Python, и, таким образом, более широкой аудитории для его написания и администрирования без необходимости использования тяжелой утилиты agssom.exe.

KHibma
источник
Но мне нужно написать логин и пароль в моем скрипте .py, любая идея, как этого избежать. Например, могу ли я использовать файл .ags?)
Лора
Вы не можете использовать файл .ags в качестве механизма для остановки / запуска служб. Пароль должен быть сохранен в файле, где-нибудь. Является ли это самим файлом .py, или если вы хотите поместить его в отдельный файл, который читает .py файл.
Хибма
2

В ArcGIS for Server 10.1+ вы можете использовать ArcGIS Server Administration Toolkit - 10.1+

Из описания (смелость моя):

ArcGIS Server Administration Toolkit предоставляет вам инструменты и сценарии, которые помогут вам администрировать ваш ArcGIS Server. Эти инструменты были написаны на Python и подключены к администратору REST ArcGIS Server, что позволяет вам быстро и легко выполнять некоторые общие административные функции, включая: - Элемент списка

  • Остановка, запуск или удаление службы
  • Переименование службы
  • Изменение уровня журнала и очистка старых журналов
  • Загрузить и зарегистрировать SOE
  • Создание класса объектов из местоположений, в которых просматривался картографический сервис (путем проверки журналов)
  • Определения службы публикации (.SD)

Инструменты в этом наборе представлены тремя основными способами: Инструменты, Код и автономный исполняемый файл.

ericchiasson
источник