Vous démarrez et arrêtez les services de carte ArcGIS Server à l'aide de Python?

10

Est-il possible d'arrêter et de démarrer par programme les services de carte ArcGIS Server à l'aide de Python?

Jeff Berry
la source
Il s'agit simplement d'une requête REST.
Vince
Je vous remercie. Mais j'ai besoin d'écrire l'identifiant et le mot de passe dans mon script .py, une idée comment éviter cela. Par exemple, puis-je utiliser le fichier .ags?)
Lora
Malheureusement non; ils ont laissé un trou majeur dans la conception lorsqu'ils n'ont pas réussi à fournir une fonction pour convertir un .agsfichier en jeton. Vous pourrez peut-être essayer de vous connecter avec un certificat (fichier PEM), bien que cela nécessite plus qu'un simple HTTP vanilla.
Vince

Réponses:

7

Dans ArcGIS 10.0, pour les services individuels, tels que vous pouvez utiliser la ligne de commande pour maintenir ArcIMS, il existe un outil en ligne de commande que vous pouvez télécharger à partir de la galerie de codes ( AGSSOM ) qui vous donne le cœur des principaux domaines, mais il n'y a pas de service spécifique granulaire 'contrôle de niveau que vous pouvez utiliser à ce moment pour démarrer / arrêter / actualiser / ajouter / supprimer des services AGS.

Il y a sur ideas.arcgis.com plusieurs endroits avec des demandes pour améliorer le contrôle des services à partir d'un emplacement plus automatisable.

DEWright
la source
Le lien vers ArcGIS Ideas est rompu. Dans tous les cas, cette réponse peut être mise à jour vers 10.7.
PolyGeo
12

Pour ceux qui utilisent ArcGIS 10.0 et qui souhaitent utiliser AGSSOM comme recommandé par DE Wright, j'ai rassemblé le code suivant. Cela arrêtera tous les services vous permettant d'effectuer les tâches de géodatabase nécessaires, puis redémarrera les services précédemment exécutés.

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
la source
4

Depuis ArcGIS Server 10.3, plusieurs utilitaires de ligne de commande basés sur Python sont fournis avec ArcGIS Server.

Selon la documentation d'Esri, ils sont généralement installés ici:

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

L' utilitaire de gestion de service est idéal pour démarrer, arrêter ou supprimer des services:

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

Charlie Hofmann
la source
3

Dans la même veine que ce que Jeff Berry a publié dans sa réponse, j'ai écrit une petite fonction qui gérera les services de carte ArcGIS Server 10.0 à l'aide des outils AGSSOM.

Dans mon cas, j'appelle individuellement les services par leur nom, en les arrêtant et en les démarrant un par un.

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

Ensuite, vous pouvez appeler un service par son nom en utilisant -x pour arrêter et -s pour démarrer:

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

Pour ArcGIS 10.7 et certaines versions antérieures, un ensemble complet de scripts python pour arrêter, démarrer, supprimer et un tas d'autres choses peuvent être trouvés ici: http://www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340 (il y a aussi un .exe à l'intérieur si vous avez absolument besoin d'un exécutable complet)

Ou plongez dans l'aide et lisez les nombreuses options (hors ligne de commande, api python, extraits de code) ici: https://enterprise.arcgis.com/en/server/latest/administer/linux/scripting-arcgis -server-administration.htm

Cependant, tous ces points sont inclus comme autres réponses dans la question que vous avez référencée. AGSSOM était un utilitaire .net écrit pour le serveur 10.0 et les versions antérieures. Une version 10.1 et plus récente a été produite, mais elle n'a jamais gagné en popularité car vous n'avez pas besoin d'un code c # / vb lourd pour interfacer avec le serveur. Server 10.1+ a été publié avec une API REST bien structurée, permettant à des langages de haut niveau, tels que Python, et donc à un public plus large de l'écrire et de l'administrer sans avoir besoin de l' utilitaire lourd agssom.exe.

KHibma
la source
Mais j'ai besoin d'écrire l'identifiant et le mot de passe dans mon script .py, une idée comment éviter cela. Par exemple, puis-je utiliser le fichier .ags?)
Lora
Vous ne pouvez pas utiliser le fichier .ags comme mécanisme pour arrêter / démarrer des services. Le mot de passe doit être enregistré dans un fichier, quelque part. Que ce soit le fichier .py lui-même, ou si vous souhaitez le placer dans un fichier séparé que le fichier .py lit.
KHibma
2

Dans ArcGIS for Server 10.1+, vous pouvez utiliser ArcGIS Server Administration Toolkit - 10.1+

D'après la description (le gras est le mien):

ArcGIS Server Administration Toolkit vous fournit les outils et les scripts pour vous aider à administrer votre ArcGIS Server. Ces outils ont été écrits en Python et se connectent à l'administrateur REST d'un serveur ArcGIS vous permettant d'effectuer rapidement et facilement certaines fonctions administratives courantes, notamment: - Élément de liste

  • Arrêter, démarrer ou supprimer un service
  • Renommer un service
  • Modification du niveau de journalisation et effacement des anciens journaux
  • Charger et enregistrer un SOE
  • Création d'une classe de fonctionnalités à partir des emplacements où un service de carte a été visualisé (en inspectant les journaux)
  • Définitions des services de publication (.SD)

Les outils contenus dans ce kit sont présentés de trois manières principales: Outils, Code et exécutable autonome.

ericchiasson
la source