Starten und Beenden von ArcGIS Server-Kartenservices mit Python?

10

Ist es möglich, ArcGIS Server-Kartendienste mithilfe von Python programmgesteuert zu stoppen und zu starten?

Jeff Berry
quelle
Dies ist nur eine REST-Abfrage.
Vince
Vielen Dank. Aber ich muss Login und Passwort in mein .py-Skript schreiben, jede Idee, wie ich das vermeiden kann. Kann ich zum Beispiel die .ags-Datei verwenden?)
Lora
Unglücklicherweise nicht; Sie haben eine große Lücke im Design hinterlassen, als sie keine Funktion zum Konvertieren einer .agsDatei in ein Token bereitstellten . Möglicherweise können Sie versuchen, eine Verbindung mit einem Zertifikat (PEM-Datei) herzustellen, obwohl dies mehr als nur Vanille-HTTP erfordert.
Vince

Antworten:

7

In ArcGIS 10.0 gibt es für einzelne Services, z. B. die Befehlszeile zur Verwaltung von ArcIMS, ein Befehlszeilentool , das Sie aus der Code Gallery ( AGSSOM ) herunterladen können. Es bietet Ihnen den Kern der wichtigsten Bereiche, es gibt jedoch keine detaillierten Services Level-Steuerung, die Sie zu diesem Zeitpunkt zum Starten / Stoppen / Aktualisieren / Hinzufügen / Entfernen von AGS-Diensten verwenden können.

Auf ideas.arcgis.com gibt es mehrere Orte mit Anfragen, die Kontrolle über Dienste von einem automatisierbareren Ort aus zu verbessern.

DEWright
quelle
Die Verknüpfung zu ArcGIS Ideas ist unterbrochen. In jedem Fall kann diese Antwort möglicherweise auf 10.7 aktualisiert werden.
PolyGeo
12

Für diejenigen, die ArcGIS 10.0 verwenden und an der Verwendung von AGSSOM interessiert sind, wie von DE Wright empfohlen, habe ich den folgenden Code zusammengestellt. Dadurch werden alle Dienste gestoppt, sodass Sie die erforderlichen Geodatabase-Aufgaben ausführen und zuvor ausgeführte Dienste neu starten können.

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
quelle
4

Ab ArcGIS Server 10.3 werden mehrere Python-basierte Befehlszeilenprogramme mit dem ArcGIS-Server geliefert.

Per esris Dokumentation werden sie normalerweise hier installiert:

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

Das Dienstprogramm zum Verwalten von Diensten eignet sich hervorragend zum Starten, Stoppen oder Löschen von Diensten:

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

Charlie Hofmann
quelle
3

Ähnlich wie Jeff Berry in seiner Antwort geschrieben hat, habe ich eine kleine Funktion geschrieben, mit der ArcGIS Server 10.0-Kartendienste mithilfe der AGSSOM-Tools verwaltet werden.

In meinem Fall rufe ich Dienste einzeln beim Namen an und stoppe und starte nacheinander.

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

Anschließend können Sie einen Dienst beim Namen aufrufen, indem Sie -x zum Stoppen und -s zum Starten verwenden:

manageMapServices("-s", "Folder/Service", "MapServer")
Timothy Michael
quelle
2

Für ArcGIS 10.7 und einige frühere Versionen finden Sie hier einen vollständigen Satz von Python-Skripten zum Stoppen, Starten, Löschen und eine Reihe anderer Dinge: http://www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340 (es gibt auch eine EXE- Datei, wenn Sie unbedingt eine vollständige ausführbare Datei benötigen)

Oder tauchen Sie in die Hilfe ein und informieren Sie sich hier über die zahlreichen Optionen (sofort einsatzbereite Befehlszeile, Python-API, Codefragmente): https://enterprise.arcgis.com/de/server/latest/administer/linux/scripting-arcgis -server-Administration.htm

Alle diese Punkte sind jedoch als andere Antworten in der Frage enthalten, auf die Sie verwiesen haben. AGSSOM war ein .net-Dienstprogramm, das für Server 10.0 und älter geschrieben wurde. Es wurde eine Version 10.1 und neuer produziert, die jedoch nie an Popularität gewann, da Sie keinen umfangreichen c # / vb-Code für die Schnittstelle zum Server benötigten. Server 10.1+ wurde mit einem gut strukturierten REST API freigegeben, Hochsprachen ermöglicht, wie Python und damit ein breiteres Publikum zu Skript und verwalten, ohne die Notwendigkeit des schweren agssom.exe Dienstprogramm.

KHibma
quelle
Aber ich muss Login und Passwort in mein .py-Skript schreiben, jede Idee, wie ich das vermeiden kann. Kann ich zum Beispiel die .ags-Datei verwenden?)
Lora
Sie können die .ags-Datei nicht als Mechanismus zum Stoppen / Starten von Diensten verwenden. Das Passwort muss irgendwo in einer Datei gespeichert werden. Ob dies die .py-Datei selbst ist oder ob Sie sie in eine separate Datei einfügen möchten, die von der .py-Datei gelesen wird.
KHibma
2

In ArcGIS for Server 10.1+ können Sie das ArcGIS Server Administration Toolkit - 10.1+ verwenden

Aus der Beschreibung (Fettdruck gehört mir):

Das ArcGIS Server Administration Toolkit bietet Ihnen die Tools und Skripts, mit denen Sie Ihren ArcGIS Server verwalten können. Diese Tools wurden in Python geschrieben und stellen eine Verbindung zum REST-Administrator eines ArcGIS-Servers her, sodass Sie schnell und einfach einige allgemeine Verwaltungsfunktionen ausführen können, darunter: - Listenelement

  • Beenden, Starten oder Löschen eines Dienstes
  • Umbenennen eines Dienstes
  • Ändern der Protokollebene und Löschen alter Protokolle
  • Laden Sie ein SOE hoch und registrieren Sie es
  • Erstellen einer Feature-Class aus den Orten, an denen ein Kartendienst angezeigt wurde (durch Überprüfen der Protokolle)
  • Veröffentlichungsdienstdefinitionen (.SD)

Die Tools in diesem Kit werden auf drei Arten dargestellt: Tools, Code und eigenständige ausführbare Datei.

Ericchiasson
quelle