Python을 사용하여 프로그래밍 방식으로 ArcGIS Server 맵 서비스를 중지하고 시작할 수 있습니까?
.ags
파일을 토큰 으로 변환하는 기능을 제공하지 못했을 때 디자인에 큰 구멍을 남겼습니다 . 일반 바닐라 HTTP 이상이 필요하지만 인증서 (PEM 파일)로 연결을 시도 할 수 있습니다.
Python을 사용하여 프로그래밍 방식으로 ArcGIS Server 맵 서비스를 중지하고 시작할 수 있습니까?
.ags
파일을 토큰 으로 변환하는 기능을 제공하지 못했을 때 디자인에 큰 구멍을 남겼습니다 . 일반 바닐라 HTTP 이상이 필요하지만 인증서 (PEM 파일)로 연결을 시도 할 수 있습니다.
답변:
ArcGIS 10.0에는 ArcIMS를 유지 관리하기위한 명령 줄과 같은 개별 서비스 의 경우 주요 영역의 핵심을 제공 하는 코드 갤러리 ( AGSSOM ) 에서 다운로드 할 수있는 명령 줄 도구 가 있지만 세부적인 '서비스 별'은 없습니다 'AGS 서비스를 시작 / 중지 / 새로 고침 / 추가 / 제거하기 위해 사용할 수있는 레벨 제어.
에있다 ideas.arcgis.com 더 오토메이션 위치에서 서비스의 제어를 개선하기 위해 요청을 여러 장소.
ArcGIS 10.0을 사용하고 DE Wright가 권장하는 AGSSOM 사용에 관심이있는 사람들을 위해 다음 코드를 정리했습니다. 이렇게하면 필요한 지리 데이터베이스 작업을 수행 할 수있는 모든 서비스가 중지되고 이전에 실행중인 서비스가 다시 시작됩니다.
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])
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
Jeff Berry가 자신의 답변에 게시 한 것과 같은 맥락에서 AGSSOM 도구를 사용하여 ArcGIS Server 10.0 맵 서비스를 관리하는 작은 기능을 작성했습니다.
제 경우에는 한 번에 하나씩 중지하고 시작하여 이름별로 서비스를 개별적으로 호출합니다.
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")
ArcGIS 10.7 및 일부 이전 버전의 경우 중지, 시작, 삭제 및 기타 여러 가지 Python 스크립트 세트가 여기에 있습니다. http://www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340 (완전히 완전한 실행 파일이 필요한 경우이 안에 .exe도 있습니다)
또는 여기 도움으로 다이빙하고 (상자 명령 행, 파이썬 API를, 코드 조각 만점) 여러 옵션에 대해 읽어 https://enterprise.arcgis.com/en/server/latest/administer/linux/scripting-arcgis -server-administration.htm
그러나 이러한 모든 사항은 귀하가 참조한 질문에 다른 답변으로 포함됩니다. AGSSOM은 Server 10.0 이상용으로 작성된 .net 유틸리티입니다. 10.1 이상의 최신 버전이 생성되었지만 서버와 인터페이스하기 위해 무거운 c # / vb 코드가 필요하지 않기 때문에 인기를 얻지 못했습니다. Server 10.1+는 잘 구조화 된 REST API와 함께 출시되어 Python과 같은 고급 언어를 사용할 수있게되었으며 많은 agssom.exe 유틸리티를 사용 하지 않고도 스크립트를 작성하고 관리 할 수 있습니다.
ArcGIS for Server 10.1+에서는 ArcGIS Server Administration Toolkit-10.1 +를 사용할 수 있습니다
설명에서 (굵은 글씨는 내 것입니다) :
ArcGIS Server Administration Toolkit은 ArcGIS Server 관리에 도움이되는 도구와 스크립트를 제공합니다. 이 도구는 Python 으로 작성되었으며 ArcGIS Server의 REST Admin에 연결되어 다음과 같은 일반적인 관리 기능을 빠르고 쉽게 수행 할 수 있습니다.-List item
- 서비스 중지, 시작 또는 삭제
- 서비스 이름 바꾸기
- 로그 레벨 수정 및 이전 로그 지우기
- 공기업 업로드 및 등록
- 맵 서비스를 본 위치에서 피쳐 클래스 생성 (로그 검사)
- 게시 서비스 정의 (.SD)
이 키트의 도구는 도구, 코드 및 독립형 실행 파일의 세 가지 주요 방법으로 제공됩니다.