การเริ่มและหยุดบริการแผนที่ ArcGIS Server โดยใช้ Python?


10

เป็นไปได้ไหมที่จะหยุดและเริ่มให้บริการแผนที่ ArcGIS Server โดยใช้ Python โดยทางโปรแกรมหรือไม่


นี่เป็นเพียงแบบสอบถาม REST
วินซ์

ขอบคุณ. แต่ฉันต้องเขียนชื่อผู้ใช้และรหัสผ่านในสคริปต์. py ความคิดใด ๆ เกี่ยวกับวิธีหลีกเลี่ยงปัญหานี้ ตัวอย่างเช่นฉันสามารถใช้ไฟล์. aggs ได้ไหม)
Lora

น่าเสียดายที่ไม่มี; พวกเขาออกจากรูสำคัญในการออกแบบเมื่อพวกเขาล้มเหลวที่จะให้ฟังก์ชั่นในการแปลง.agsไฟล์เป็นโทเค็น คุณอาจลองเชื่อมต่อกับใบรับรอง (ไฟล์ PEM) ได้แม้ว่าจะต้องใช้มากกว่าวานิลลา HTTP ธรรมดา
วินซ์

คำตอบ:


7

ที่ ArcGIS 10.0 สำหรับบริการส่วนบุคคลเช่นคุณสามารถใช้บรรทัดคำสั่งเพื่อดูแล ArcIMS มีเครื่องมือบรรทัดคำสั่งที่คุณสามารถดาวน์โหลดได้จาก Code Gallery ( AGSSOM ) ที่ให้คุณเป็นแกนหลักของพื้นที่สำคัญ ๆ แต่ไม่มีบริการเฉพาะที่ละเอียด 'การควบคุมระดับที่คุณสามารถใช้ในขณะนี้เพื่อเริ่ม / หยุด / รีเฟรช / เพิ่ม / ลบบริการ AGS

มีอยู่ที่ideas.arcgis.comหลายแห่งพร้อมคำขอเพื่อปรับปรุงการควบคุมการบริการจากสถานที่ที่เป็นอัตโนมัติมากขึ้น


ลิงก์ไปยังแนวคิดของ ArcGIS นั้นใช้งานไม่ได้ ไม่ว่าจะในกรณีใดคำตอบนี้อาจอัปเดตเป็น 10.7
PolyGeo

12

สำหรับผู้ที่ใช้ ArcGIS 10.0 และสนใจที่จะใช้ AGSSOM ตามคำแนะนำของ DE Wright ฉันได้รวบรวมรหัสต่อไปนี้ การดำเนินการนี้จะหยุดบริการทั้งหมดที่อนุญาตให้คุณดำเนินการกับฐานข้อมูลภูมิศาสตร์ที่จำเป็นจากนั้นเริ่มบริการที่เรียกใช้ก่อนหน้านี้ใหม่

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 โปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ใช้ Python หลายตัวมาพร้อมกับเซิร์ฟเวอร์ ArcGIS

เอกสารของ esriต่อพวกเขามักติดตั้งที่นี่:

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

ยูทิลิตี้การจัดการบริการนั้นยอดเยี่ยมสำหรับการเริ่มหยุดหรือลบบริการ:

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


3

ในหลอดเลือดดำเดียวกับสิ่งที่ Jeff Berry โพสต์ในคำตอบของเขาฉันได้เขียนฟังก์ชั่นเล็ก ๆ ที่จะจัดการบริการแผนที่ ArcGIS Server 10.0 โดยใช้เครื่องมือ AGSSOM

ในกรณีของฉันฉันเรียกบริการเป็นรายบุคคลโดยการหยุดและเริ่มทีละครั้ง

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

จากนั้นคุณสามารถเรียกใช้บริการตามชื่อโดยใช้ -x เพื่อหยุดและ -s เพื่อเริ่มต้น:

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

2

สำหรับ ArcGIS 10.7 และเวอร์ชันก่อนหน้าบางชุดสคริปต์ python แบบสมบูรณ์เพื่อหยุดเริ่มต้นลบและอื่น ๆ สามารถพบได้ที่นี่: http://www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340 (นอกจากนี้ยังมี. exe ภายในตัวนี้หากคุณจำเป็นต้องใช้ไฟล์เต็มรูปแบบ)

หรือดำดิ่งลงไปในความช่วยเหลือและอ่านเกี่ยวกับตัวเลือกมากมาย (นอกบรรทัดคำสั่ง box, python api, ตัวอย่างโค้ด) ที่นี่: https://enterprise.arcgis.com/en/server/latest/administer/linux/scripting-arcgis -Server-administration.htm

อย่างไรก็ตามคะแนนทั้งหมดเหล่านี้รวมอยู่ในคำตอบอื่น ๆ ในคำถามที่คุณอ้างอิง AGSSOM เป็นยูทิลิตี้. net ที่เขียนขึ้นสำหรับเซิร์ฟเวอร์ 10.0 และเก่ากว่า มีเวอร์ชัน 10.1 และเวอร์ชันที่ใหม่กว่า แต่ไม่เคยได้รับความนิยมเนื่องจากคุณไม่ต้องการรหัส c # / vb จำนวนมากเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ เซิร์ฟเวอร์ 10.1+ ได้รับการเผยแพร่ด้วย REST API ที่มีโครงสร้างที่ดีช่วยให้ภาษาระดับสูงเช่น Python ทำให้ผู้ชมในวงกว้างสามารถสคริปต์และจัดการได้โดยไม่ต้องใช้ยูทิลิตี้ agssom.exe หนัก


แต่ฉันต้องเขียนชื่อผู้ใช้และรหัสผ่านในสคริปต์. py ความคิดใด ๆ เกี่ยวกับวิธีหลีกเลี่ยงปัญหานี้ ตัวอย่างเช่นฉันสามารถใช้ไฟล์. aggs ได้ไหม)
Lora

คุณไม่สามารถใช้ไฟล์. agg เป็นกลไกในการหยุด / เริ่มบริการได้ รหัสผ่านต้องถูกบันทึกไว้ในไฟล์ ไม่ว่าจะเป็นไฟล์. py เองหรือหากคุณต้องการวางไว้ในไฟล์แยกต่างหากที่ไฟล์. py อ่าน
KHibma

2

ที่ ArcGIS for Server 10.1+ คุณสามารถใช้ArcGIS Server Administration Toolkit - 10.1+

จากคำอธิบาย (เป็นของฉัน):

ชุดเครื่องมือการดูแลเซิร์ฟเวอร์ ArcGIS ให้เครื่องมือและสคริปต์เพื่อช่วยคุณจัดการเซิร์ฟเวอร์ ArcGIS ของคุณ เครื่องมือเหล่านี้ถูกเขียนในPythonและเชื่อมต่อกับ REST Admin ของ ArcGIS Server ช่วยให้คุณสามารถใช้งานฟังก์ชั่นการจัดการทั่วไปได้อย่างรวดเร็วและง่ายดายรวมถึง: - รายการไอเท็ม

  • การหยุดการเริ่มหรือการลบบริการ
  • เปลี่ยนชื่อบริการ
  • การแก้ไขระดับการบันทึกและการล้างบันทึกเก่า
  • อัพโหลดและลงทะเบียน SOE
  • การสร้าง classclass จากสถานที่ที่ดูแผนที่บริการ (โดยตรวจสอบบันทึก)
  • คำนิยามบริการการประกาศ (.SD)

เครื่องมือต่าง ๆ ภายในชุดนี้นำเสนอในสามวิธีหลัก: เครื่องมือรหัสและปฏิบัติการแบบสแตนด์อโลน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.