Saya mengembangkan beberapa kode yang ingin saya jalankan baik sebagai layanan web ArcGIS Server dan sebagai skrip mandiri. Saya ingin dapat memodifikasi eksekusi sedikit tergantung pada apakah itu berjalan sebagai layanan web AGS atau sebagai python mandiri / dalam Desktop.
Apakah ada cara untuk mendeteksi ini?
Saya sudah melakukan pencarian tetapi belum menemukan sesuatu yang sangat memuaskan. Saya telah melihat arcpy.mapping.CreateGISServerConnectionFile, tetapi ini menetapkan koneksi ke server yang bertentangan dengan memeriksa lingkungan saat ini. Saya juga mencari informasi tentang bagaimana layanan dijalankan dengan AGS (misalnya, ini ), tapi saya tidak benar-benar melihat apa pun di sepanjang jenis fungsi arcpy.isWebService (). Apakah saya hanya perlu memeriksa lingkungan (ingin melihat apakah "% scratchFolder% telah disetel atau memeriksa sesuatu yang berkaitan dengan sys.argv)? Sepertinya merupakan solusi yang tidak stabil.
@ Khibma dan yang lainnya membuat saya bertanya-tanya apakah saya bisa mendapatkan informasi dengan menggunakan arcpy untuk memeriksa versinya. Aku menggali agak membabi buta dan kupikir aku punya sesuatu walaupun itu bukan yang kuharapkan. Saya belum memeriksa di bawah AGS.
Ini menghasilkan diktik yang bagus:
Jadi saya bisa mengatakan:
Terima kasih telah menendang itu!
sumber
Jadi Anda bisa melakukan pengecekan terhadap apa yang diinstal. Namun ini tidak akan membuat Anda jauh jika DT dan Server diinstal pada mesin yang sama. Adapun fungsi yang memberitahu Anda apa yang Anda jalankan di bawah, tidak, tidak ada.
Berpikir keras: DT adalah 32bit, Server 64bit. Anda bisa melakukan sys.path dan memeriksa versi Python yang sedang digunakan.
atau
Jika Anda tahu itu berjalan sebagai Layanan GP (tidak hanya menggunakan server python) vs DT, Anda bisa memeriksa jalur arcpy.env.scratchFolder. Pada instalasi yang umum, ia akan selalu terlihat seperti C: \ arcgisserver \ directories \ arcgisjobs \ [service] _gpserver \ [guid] \ ....
sumber
RuntimeManager
adalah .NET, bukan objek COM.C:\Program Files (x86)\Common Files\ArcGIS\bin\ArcGISVersion.dll
adalah tipe perpustakaan yang dapat memuat yang memiliki banyak objek yang sama, Anda dapat menggunakannya dari comtypes.