Uruchamianie i zatrzymywanie usług map ArcGIS Server za pomocą Pythona?

10

Czy można programowo zatrzymać i uruchomić usługi map ArcGIS Server przy użyciu Pythona?

Jeff Berry
źródło
To jest tylko zapytanie REST.
Vince
Dziękuję Ci. Ale muszę napisać login i hasło w moim skrypcie .py, każdy pomysł, jak tego uniknąć. Na przykład, czy mogę użyć pliku .ags?)
Lora,
Niestety nie; pozostawili dużą dziurę w projekcie, gdy nie udostępnili funkcji konwersji .agspliku na token. Możesz spróbować połączyć się z certyfikatem (plik PEM), choć wymaga to więcej niż zwykłego waniliowego HTTP.
Vince

Odpowiedzi:

7

W ArcGIS 10.0 w przypadku poszczególnych usług, takich jak wiersz poleceń w celu utrzymania ArcIMS, istnieje narzędzie wiersza polecenia, które można pobrać z Galerii kodów ( AGSSOM ), które zapewnia rdzeń głównych obszarów, ale nie ma szczegółowego „specyficznego dla usługi” 'kontrola poziomu, której możesz teraz użyć do uruchomienia / zatrzymania / odświeżenia / dodania / usunięcia usług AGS.

W witrynie ideas.arcgis.com jest kilka miejsc z prośbami o poprawę kontroli usług z bardziej automatycznej lokalizacji.

DEWright
źródło
Link do ArcGIS Ideas jest zepsuty. W każdym razie być może tę odpowiedź można zaktualizować do wersji 10.7.
PolyGeo
12

Dla tych, którzy używają ArcGIS 10.0 i są zainteresowani użyciem AGSSOM zgodnie z zaleceniami DE Wrighta, przygotowałem następujący kod. Spowoduje to zatrzymanie wszystkich usług, umożliwiając wykonanie niezbędnych zadań w geobazie, a następnie zrestartowanie wcześniej uruchomionych usług.

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])
Jeff Berry
źródło
4

Począwszy od ArcGIS Server 10.3, kilka narzędzi wiersza poleceń opartych na Pythonie jest dostarczanych wraz z serwerem ArcGIS.

Dokumenty według esri są zwykle instalowane tutaj:

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

Narzędzie do zarządzania usługami doskonale nadaje się do uruchamiania, zatrzymywania lub usuwania usług:

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

Charlie Hofmann
źródło
3

W tym samym duchu, co napisał Jeff Berry w swojej odpowiedzi, napisałem małą funkcję, która będzie zarządzać usługami mapowymi ArcGIS Server 10.0 za pomocą narzędzi AGSSOM.

W moim przypadku dzwonię do usług indywidualnie według nazwiska, zatrzymując się i uruchamiając pojedynczo.

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()

Następnie możesz wywołać usługę według nazwy, używając opcji -x, aby zatrzymać i -s, aby uruchomić:

manageMapServices("-s", "Folder/Service", "MapServer")
Timothy Michael
źródło
2

W przypadku ArcGIS 10.7 i niektórych wcześniejszych wersji pełny zestaw skryptów Pythona do zatrzymywania, uruchamiania, usuwania i kilka innych rzeczy można znaleźć tutaj: http://www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340 (wewnątrz tego pliku znajduje się również plik .exe, jeśli absolutnie potrzebujesz pełnego pliku wykonywalnego)

Lub zagłęb się w pomoc i przeczytaj o wielu opcjach (z linii poleceń, API Pythona, fragmentów kodu) tutaj: https://enterprise.arcgis.com/en/server/latest/administer/linux/scripting-arcgis -server-Administration.htm

Jednak wszystkie te punkty są uwzględnione jako inne odpowiedzi w pytaniu, do którego się odwołałeś. AGSSOM to narzędzie .net napisane dla serwera 10.0 i starszych. Powstała wersja 10.1 i nowsza, ale nigdy nie zyskała popularności, ponieważ nie był potrzebny ciężki kod c # / vb do połączenia z serwerem. Serwer 10.1+ został wydany z dobrze ustrukturyzowanym interfejsem API REST, pozwalającym na języki wysokiego poziomu, takie jak Python, a tym samym szerszą publiczność na pisanie skryptów i administrowanie nim bez potrzeby użycia ciężkiego narzędzia agssom.exe.

KHibma
źródło
Ale muszę napisać login i hasło w moim skrypcie .py, każdy pomysł, jak tego uniknąć. Na przykład, czy mogę użyć pliku .ags?)
Lora,
Nie można użyć pliku .ags jako mechanizmu zatrzymywania / uruchamiania usług. Gdzieś hasło musi zostać zapisane w pliku. Czy to jest sam plik .py, czy też chcesz umieścić go w osobnym pliku, który czyta plik .py.
KHibma
2

W ArcGIS for Server 10.1+ można korzystać z ArcGIS Server Administration Toolkit - 10.1+

Z opisu (pogrubienie jest moje):

ArcGIS Server Administration Toolkit zapewnia narzędzia i skrypty pomagające w administrowaniu ArcGIS Server. Te narzędzia nie zostały napisane w Pythonie i łączą się z administratorem REST serwera ArcGIS Server, umożliwiając szybkie i łatwe wykonywanie niektórych typowych funkcji administracyjnych, w tym: - Element listy

  • Zatrzymywanie, uruchamianie lub usuwanie usługi
  • Zmiana nazwy usługi
  • Modyfikowanie poziomu dziennika i usuwanie starych dzienników
  • Prześlij i zarejestruj SOE
  • Tworzenie klasy obiektów z lokalizacji, w których przeglądana była usługa mapowa (poprzez sprawdzanie dzienników)
  • Definicje usług publikowania (.SD)

Narzędzia w tym zestawie są prezentowane na trzy główne sposoby: Narzędzia, Kod i samodzielny plik wykonywalny.

ericchiasson
źródło