Skip To Content

Exemple : publier un service à l’aide d’un fichier de définition de service

Un fichier de définition de service (.sd) encapsule un service dans un seul fichier transférable, en insérant éventuellement des données SIG source. L’outil de géotraitement Upload Service Definition (Charger la définition du service) charge une définition de service sur le site ArcGIS Server et la publie. Vous pouvez accéder à cet outil à partir du site-package ArcPy inclus avec ArcGIS Server.

L’exemple Python suivant parcourt un dossier donné sur une machine Microsoft Windows, recherche les définitions de service stockées dans le dossier (à l’exclusion des sous-dossiers) et les publie sur le site ArcGIS Server autonome spécifié à l’aide du fichier de connexion (.ags).

L’exécution de l’outil nécessite un emplacement de données local contenant les fichiers de définition de services, le chemin du fichier de connexion ArcGIS Server et le nom du dossier de destination sur le site ArcGIS Server.

# Publishes all service definitions in an operating system directory
#  (excluding subfolders). Services are published but not started.
# Import required modules
import arcpy
import os

# Define path to SD files on local machine
sdDir = "C:/data/sd_files"

# Provide path to ArcGIS Server connection file
con = "C:/projects/publishing_project/arcgis on myserver_6443.ags"

# Destination folder name on ArcGIS Server
serverFolder = "ScriptPublish"

# Loop through all items in local directory
sdList = os.listdir(sdDir)

for sd in sdList:
    
    # Construct path to item
    extension = os.path.splitext(sd)[1]  # Get file extension
    sdPath = os.path.join(sdDir, sd)

    # Check if item is an SD file and, if so, try to publish
    if os.path.isfile(sdPath) and extension == ".sd":    
        try:     
            arcpy.UploadServiceDefinition_server(sdPath, con, "", "", "EXISTING", serverFolder, "STOPPED")
            print("Published " + sd + " with no errors reported.")
            
        except:
            print("Could not complete publishing operation for " + sd + ".")

        print(arcpy.GetMessages())