Pythonを使用してArcGIS Serverマップサービスを開始および停止しますか?


10

Pythonを使用してプログラムでArcGIS Serverマップサービスを停止および開始することはできますか?


これは単なるRESTクエリです。
ビンス

ありがとうございました。しかし、.pyスクリプトにログインとパスワードを記述する必要があります。これを回避する方法はありません。たとえば、.agsファイルを使用できますか?)
Lora

残念だけど違う; 彼らは、.agsファイルをトークンに変換する機能を提供できなかったときに、設計に大きな穴を残しました。証明書(PEMファイル)を使用して接続できる可能性がありますが、これにはプレーンなバニラHTTP以上のものが必要です。
ビンス

回答:


7

ArcGIS 10.0では、ArcIMSを維持するためのコマンドラインなどの個々のサービスについて、主要な領域のコアを提供するコードギャラリー(AGSSOM)からダウンロードできるコマンドラインツールがありますが、詳細な「サービス固有」はありません。 'AGSサービスの開始/停止/更新/追加/削除に現時点で使用できるレベルコントロール。

Ideas.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以降、いくつかの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が彼の回答で投稿したのと同じように、AGSSOMツールを使用してArcGIS Server 10.0マップサービスを管理する小さな関数を書きました。

私の場合、サービスを名前で個別に呼び出し、一度に1つずつ停止および開始します。

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コードを必要としなかったため、人気はありませんでした。サーバー10.1以降は、Pythonのような高レベルの言語を、できるように、よく構造のREST APIをリリースし、ひいてはスクリプトへの幅広い視聴者とを必要とせず、それを管理して重い agssom.exeユーティリティ。


しかし、.pyスクリプトにログインとパスワードを記述する必要があります。これを回避する方法はありません。たとえば、.agsファイルを使用できますか?)
Lora

サービスを停止/開始するメカニズムとして.agsファイルを使用することはできません。パスワードはどこかにファイルに保存する必要があります。それが.pyファイル自体なのか、それとも.pyファイルが読み取る別のファイルに入れたいのか。
KHibma

2

ArcGIS for Server 10.1+では、ArcGIS Server Administration Toolkit-10.1+を使用できます

説明から(太字は私のものです):

ArcGIS Server Administration Toolkitは、ArcGIS Serverの管理に役立つツールとスクリプトを提供します。これらのツールはPythonで記述されており、ArcGIS ServerのREST管理に接続して、次のような一般的な管理機能をすばやく簡単に実行できます。-リストアイテム

  • サービスの停止、開始、または削除
  • サービスの名前を変更する
  • ログレベルの変更と古いログの消去
  • SOEのアップロードと登録
  • マップサービスが表示された場所から(ログを検査して)フィーチャクラスを作成する
  • サービス定義の公開(.SD)

このキット内のツールは、ツール、コード、スタンドアロン実行可能ファイルの3つの主要な方法で提供されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.