Запуск та зупинка сервісів карт ArcGIS Server за допомогою Python?


10

Чи можливо програмно зупинити та запустити сервіси карт ArcGIS Server за допомогою Python?


Це просто запит REST.
Вінс

Дякую. Але мені потрібно написати логін та пароль у своєму .py-скрипті, будь-яку ідею, як цього уникнути. Наприклад, чи можу я використовувати файл .ags?)
Лора

На жаль, немає; вони залишили головну дірку в дизайні, коли не змогли забезпечити функцію перетворення .agsфайлу в маркер. Можливо, ви зможете спробувати підключитися до сертифіката (PEM-файл), хоча для цього потрібно більше, ніж звичайний HTTP ванілі.
Вінс

Відповіді:


7

У ArcGIS 10.0 для окремих служб, таких як командний рядок для підтримки ArcIMS, є інструмент командного рядка, який ви можете завантажити з Галереї кодів ( AGSSOM ), який дає вам ядро ​​основних областей, але немає конкретної послуги 'контроль рівня, який ви можете використовувати в цей час для запуску / зупинки / оновлення / додавання / видалення послуг AGS.

На Ideas.arcgis.com є кілька місць із запитами на покращення контролю над послугами з більш автоматизованого місця.


Посилання на ідеї ArcGIS порушено. У будь-якому випадку, можливо, цю відповідь можна оновити до 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.

За документацією 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 -сервер-адміністрування.htm

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


Але мені потрібно написати логін та пароль у своєму .py-скрипті, будь-яку ідею, як цього уникнути. Наприклад, чи можу я використовувати файл .ags?)
Лора

Ви не можете використовувати файл .ags як механізм зупинки / запуску служб. Пароль потрібно зберегти у файлі десь. Чи це сам файл .py, чи ви хочете помістити його в окремий файл, який читає .py файл.
Хібма

2

У ArcGIS for Server 10.1+ ви можете скористатись інструментарієм адміністрування серверів ArcGIS - 10.1+

З опису (напівжирне закріплення):

Інструментарій адміністрування сервера ArcGIS надає вам інструменти та сценарії, які допоможуть вам адмініструвати ваш ArcGIS Server. Ці інструменти були написані на Python та підключаються до адміністратора REST сервера ArcGIS, що дозволяє швидко та легко виконувати деякі загальні адміністративні функції, зокрема: - Елемент списку

  • Зупинка, запуск або видалення послуги
  • Перейменування послуги
  • Зміна рівня журналу та очищення старих журналів
  • Завантаження та реєстрація ДП
  • Створення класного класу з місць, де переглядалася служба карт (оглядом журналів)
  • Визначення послуги видавничої справи (.SD)

Інструменти всередині цього набору представлені трьома основними способами: Інструменти, Код та окремий виконуваний файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.