使用Python启动和停止ArcGIS Server地图服务?


10

是否可以使用Python以编程方式停止和启动ArcGIS Server地图服务?


这只是一个REST查询。
文斯

谢谢。但是我需要在.py脚本中写登录名和密码,任何想法如何避免这种情况。例如,我可以使用.ags文件吗?)
Lora

抱歉不行; 当他们无法提供将.ags文件转换为令牌的功能时,他们在设计中留下了重大漏洞。您可能可以尝试使用证书(PEM文件)进行连接,尽管这不仅需要普通的HTTP。
文斯

Answers:


7

在ArcGIS 10.0中,对于单个服务(例如,您可以通过命令行来维护ArcIMS),可以从代码库(AGSSOM)下载一个命令行工具,该工具为您提供主要领域的核心,但没有针对特定服务的细粒度“您可以在此时用来启动/停止/刷新/添加/删除AGS服务的级别控制。

idea.arcgis.com上有几个地方,要求从更自动化的位置改善对服务的控制。


到ArcGIS Ideas的链接已断开。无论如何,也许这个答案可以更新为10.7。
PolyGeo

12

对于那些使用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])

4

从ArcGIS Server 10.3开始,ArcGIS Server捆绑了几个基于Python的命令行实用程序。

根据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在回答中所说的一样,我编写了一个小函数,该函数将使用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")

2

对于ArcGIS 10.7和某些早期版本,可以在此处找到停止,启动,删除和其他功能的完整Python脚本集:http : //www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340(如果您绝对需要完整的可执行文件,则内部还有一个.exe)

或深入了解帮助并在此处了解许多选项(开箱即用的命令行,python 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),从而使更多的读者可以编写脚本和对其进行管理,而无需使用繁重的 assom.exe实用程序。


但是我需要在.py脚本中写登录名和密码,任何想法如何避免这种情况。例如,我可以使用.ags文件吗?)
Lora

您不能将.ags文件用作停止/启动服务的机制。密码需要保存在文件中的某个位置。无论是.py文件本身,还是要将其放置在.py文件读取的单独文件中。
基希马

2

在ArcGIS for Server 10.1+中,您可以使用ArcGIS Server管理工具包-10.1+

从描述(粗俗是我的):

ArcGIS Server管理工具包为您提供工具和脚本,以帮助您管理ArcGIS Server。这些工具尚未使用Python编写,并已连接到ArcGIS Server的REST Admin,可让您快速轻松地执行一些常见的管理功能,包括:-列表项

  • 停止,启动或删除服务
  • 重命名服务
  • 修改日志级别并清除旧日志
  • 上载并注册SOE
  • 从查看地图服务的位置创建要素类(通过检查日志)
  • 发布服务定义(.SD)

该套件中的工具以三种主要方式提供:工具,代码和独立可执行文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.