Memulai dan menghentikan layanan peta Server ArcGIS menggunakan Python?


10

Apakah mungkin untuk menghentikan dan memulai secara terprogram layanan peta Server ArcGIS menggunakan Python?


Ini hanya permintaan REST.
Vince

Terima kasih. Tapi saya harus menulis login dan kata sandi dalam skrip .py saya, tahu cara menghindarinya. Misalnya, dapatkah saya menggunakan file .ags?)
Lora

Sayangnya tidak ada; mereka meninggalkan lubang besar dalam desain ketika mereka gagal menyediakan fungsi untuk mengubah .agsfile menjadi token. Anda mungkin dapat mencoba menghubungkan dengan sertifikat (file PEM), meskipun ini membutuhkan lebih dari HTTP vanilla biasa.
Vince

Jawaban:


7

Di ArcGIS 10.0, untuk layanan individual, seperti Anda dapat command-line untuk mempertahankan ArcIMS, ada alat commandline yang dapat Anda unduh dari Galeri Kode ( AGSSOM ) yang memberi Anda inti dari area utama tetapi tidak ada layanan khusus untuk granular Kontrol level yang dapat Anda gunakan saat ini untuk Memulai / Berhenti / Refresh / Tambah / Hapus layanan AGS.

Ada di ideas.arcgis.com beberapa tempat dengan permintaan untuk meningkatkan kontrol layanan dari lokasi yang lebih otomatis.


Tautan ke ArcGIS Ideas rusak. Dalam hal apa pun, mungkin jawaban ini dapat diperbarui ke 10.7.
PolyGeo

12

Bagi mereka yang menggunakan ArcGIS 10.0, dan tertarik menggunakan AGSSOM seperti yang direkomendasikan oleh DE Wright, saya telah mengumpulkan kode berikut. Ini akan menghentikan semua layanan yang memungkinkan Anda untuk melakukan tugas geodatabase yang diperlukan, dan kemudian memulai kembali layanan yang berjalan sebelumnya.

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

Pada ArcGIS Server 10.3, beberapa utilitas baris perintah berbasis Python dibundel dengan server ArcGIS.

Dokumentasi per esri biasanya dipasang di sini:

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

The mengelola layanan utilitas sangat bagus untuk memulai, menghentikan atau menghapus layanan:

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


3

Dalam nada yang sama dengan apa yang diposting Jeff Berry dalam jawabannya, saya menulis sebuah fungsi kecil yang akan mengelola layanan peta ArcGIS Server 10.0 menggunakan alat AGSSOM.

Dalam kasus saya, saya memanggil layanan satu per satu dengan nama, berhenti dan mulai satu per satu.

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

Kemudian, Anda dapat memanggil layanan dengan nama menggunakan -x untuk berhenti dan -s untuk memulai:

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

2

Untuk ArcGIS 10.7, dan beberapa versi sebelumnya, satu set lengkap skrip python untuk berhenti, memulai, menghapus, dan banyak hal lainnya dapat ditemukan di sini: http://www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340 (ada juga .exe di dalam ini jika Anda benar-benar membutuhkan eksekusi penuh)

Atau selami bantuan ini dan baca tentang banyak opsi (di luar kotak perintah, api python, cuplikan kode) di sini: https://enterprise.arcgis.com/en/server/latest/administer/linux/scripting-arcgis -server-administration.htm

Namun, semua poin ini dimasukkan sebagai jawaban lain dalam pertanyaan yang Anda referensikan. AGSSOM adalah utilitas .net yang ditulis untuk Server 10.0 dan lebih lama. Ada versi 10.1 dan yang lebih baru yang diproduksi, tetapi tidak pernah mendapatkan popularitas karena Anda tidak perlu kode c # / vb yang berat untuk berinteraksi dengan server. Server 10.1+ dirilis dengan REST API terstruktur dengan baik, memungkinkan bahasa tingkat tinggi, seperti Python, dan dengan demikian audiens yang lebih luas untuk skrip dan mengelola tanpa memerlukan utilitas agssom.exe yang berat .


Tapi saya harus menulis login dan kata sandi dalam skrip .py saya, tahu cara menghindarinya. Misalnya, dapatkah saya menggunakan file .ags?)
Lora

Anda tidak dapat menggunakan file .ags sebagai mekanisme untuk menghentikan / memulai layanan. Kata sandi perlu disimpan dalam file, di suatu tempat. Apakah itu file .py itu sendiri, atau jika Anda ingin meletakkannya di file terpisah yang dibaca file .py.
KHibma

2

Di ArcGIS untuk Server 10.1+ Anda dapat menggunakan Perangkat Administrasi Server ArcGIS - 10.1+

Dari deskripsi (huruf tebal adalah milikku):

ArcGIS Server Administration Toolkit memberi Anda alat dan skrip untuk membantu Anda mengelola Server ArcGIS Anda. Alat-alat ini belum ditulis dalam Python dan terhubung ke Admin REST dari ArcGIS Server yang memungkinkan Anda untuk dengan cepat dan mudah melakukan beberapa fungsi administrasi umum, termasuk: - Daftar item

  • Menghentikan, memulai atau menghapus layanan
  • Mengganti nama layanan
  • Memodifikasi level log dan menghapus log lama
  • Unggah dan daftarkan BUMN
  • Membuat class feature dari lokasi layanan peta dilihat di (dengan memeriksa log)
  • Definisi Layanan Penerbitan (.SD)

Alat-alat di dalam kit ini disajikan dalam tiga cara utama: Alat, Kode, dan dieksekusi mandiri.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.