Python kullanarak ArcGIS Server harita hizmetlerini başlatma ve durdurma?


10

Python kullanarak ArcGIS Server harita servislerini programlı olarak durdurmak ve başlatmak mümkün müdür?


Bu sadece bir REST sorgusudur.
Vince

Teşekkür ederim. Ancak .py betiğime giriş ve şifre yazmam gerekiyor, bu nasıl önleneceği hakkında herhangi bir fikir. Örneğin, .ags dosyasını kullanabilir miyim?)
Lora

Ne yazık ki hayır; .agsdosyayı bir jetona dönüştürmek için bir işlev sağlayamadıklarında tasarımda büyük bir boşluk bırakmışlardır . Bir sertifika (PEM dosyası) ile bağlanmayı deneyebilirsiniz, ancak bu düz vanilya HTTP'den daha fazlasını gerektirir.
Vince

Yanıtlar:


7

ArcGIS 10.0'da, ArcIMS'yi korumak için komut satırı kullanabileceğiniz gibi bireysel hizmetler için, Kod Galerisi'nden ( AGSSOM ) indirebileceğiniz , size büyük alanların çekirdeğini sağlayan bir komut satırı aracı vardır, ancak ayrıntılı bir 'hizmete özgü yoktur. AGS hizmetlerini başlatmak / durdurmak / yenilemek / eklemek / kaldırmak için şu anda kullanabileceğiniz seviye kontrolü.

Üzerinde bulunmaktadır ideas.arcgis.com daha automatable yerden hizmetlerin kontrolünü geliştirmek için istekleri ile çeşitli yerler.


ArcGIS Fikirleri bağlantısı koptu. Her durumda, belki de bu cevap 10.7 olarak güncellenebilir.
PolyGeo

12

ArcGIS 10.0 kullanan ve AGSSOM'u DE Wright tarafından önerilen şekilde kullanmak isteyenler için aşağıdaki kodu bir araya getirdim. Bu, gerekli coğrafi veritabanı görevlerini gerçekleştirmenize izin veren tüm hizmetleri durdurur ve daha önce çalışan hizmetleri yeniden başlatır.

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'ten itibaren, birkaç Python tabanlı komut satırı yardımcı programı ArcGIS sunucusuyla birlikte gelir.

Başına ESRI'nın belgelerinde genellikle burada yüklenir:

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

Servis yönetimi yardımcı programı , hizmetleri başlatmak, durdurmak veya silmek için mükemmeldir:

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


3

Jeff Berry'nin cevabında yazdığı şeyle aynı şekilde, AGSSOM araçlarını kullanarak ArcGIS Server 10.0 harita hizmetlerini yönetecek küçük bir fonksiyon yazdım.

Benim durumumda, hizmetleri tek tek çağırıp durdurarak tek tek adlandırıyorum.

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

Ardından, durdurmak için -x ve başlatmak için -s tuşlarını kullanarak bir hizmeti ada göre arayabilirsiniz:

manageMapServices("-s", "Folder/Service", "MapServer")

2

ArcGIS 10.7 ve daha önceki bazı sürümler için, durdurmak, başlatmak, silmek ve bir sürü başka şey için eksiksiz bir python komut dizisi burada bulunabilir: http://www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340 (kesinlikle tam bir yürütülebilir dosyaya ihtiyacınız varsa bunun içinde bir .exe vardır)

Veya yardıma dalın ve burada birçok seçenek hakkında (kutu komut satırı, python api, kod parçacıkları) okuyun: https://enterprise.arcgis.com/en/server/latest/administer/linux/scripting-arcgis -sunucu-administration.htm

Ancak, tüm bu noktalar referans verdiğiniz soruya diğer cevaplar olarak dahil edilmiştir. AGSSOM, Sunucu 10.0 ve daha eski sürümler için yazılmış bir .net yardımcı programıdır. Üretilen 10.1 ve daha yeni bir sürüm vardı, ancak sunucuyla arayüz kurmak için ağır c # / vb koduna ihtiyaç duymadığınız için popülerlik kazanmadı. Server 10.1+, Python gibi üst düzey dillerin ve böylece daha geniş bir kitlenin ağır agssom.exe yardımcı programına ihtiyaç duymadan komut dosyası oluşturup yönetmesine izin veren iyi yapılandırılmış bir REST API ile piyasaya sürüldü .


Ancak .py betiğime giriş ve şifre yazmam gerekiyor, bu nasıl önleneceği hakkında herhangi bir fikir. Örneğin, .ags dosyasını kullanabilir miyim?)
Lora

Hizmetleri durdurmak / başlatmak için bir mekanizma olarak .ags dosyasını kullanamazsınız. Parolanın bir yere bir dosyaya kaydedilmesi gerekir. Bu .py dosyasının kendisi olup olmadığını veya .py dosyasının okuduğu ayrı bir dosyaya koymak isteyip istemediğinizi.
KHibma

2

ArcGIS for Server 10.1+ sürümünde ArcGIS Server Yönetim Araç Seti'ni kullanabilirsiniz - 10.1+

Açıklamadan (kalın yazı benimdir):

ArcGIS Sunucusu Yönetim Araç Seti, ArcGIS Sunucunuzu yönetmenize yardımcı olacak araçlar ve komut dosyaları sağlar. Bu araçlar Python'da yazılmıştır ve aşağıdakiler de dahil olmak üzere bazı yaygın yönetim işlevlerini hızlı ve kolay bir şekilde gerçekleştirmenizi sağlayan bir ArcGIS Sunucusunun REST Yöneticisine bağlanır: - Liste öğesi

  • Bir hizmeti durdurma, başlatma veya silme
  • Bir hizmeti yeniden adlandırma
  • Günlük düzeyini değiştirme ve eski günlükleri temizleme
  • Bir SOE yükleme ve kaydetme
  • Bir harita hizmetinin görüntülendiği konumlardan bir özellik sınıfı oluşturma (günlükleri inceleyerek)
  • Yayın Hizmet Tanımları (.SD)

Bu kitin içindeki araçlar üç ana şekilde sunulur: Araçlar, Kod ve bağımsız çalıştırılabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.