Я разрабатываю код, который хочу запускать как веб-сервис ArcGIS Server, так и как отдельный скрипт. Я хочу иметь возможность немного изменить исполнение в зависимости от того, работает ли он как веб-служба AGS или как автономный python / в Desktop.
Есть ли способ обнаружить это?
Я провел некоторые поиски, но не нашел ничего очень удовлетворительного. Я видел arcpy.mapping.CreateGISServerConnectionFile, но это устанавливает соединения с сервером, а не проверяет текущую среду. Я также искал информацию о том, как службы запускаются в AGS (например, в этом ), но на самом деле я не вижу ничего похожего на функцию типа arcpy.isWebService (). Нужно ли мне просто проверять среду (например, посмотреть, был ли установлен "% scratchFolder%" или исследовать что-то, связанное с sys.argv)? Кажется, это нестабильное решение.
@KHibma и другие заставили меня задуматься, могу ли я получить информацию, используя arcpy для проверки версии. Я немного слепо покопался и думаю, что у меня что-то есть, даже если это не то, чего я ожидал. Я еще не проверил под AGS.
Это производит хороший диктат:
Так что я могу сказать:
Спасибо за это!
источник
Таким образом, вы можете проверить, что установлено. Это, однако, не поможет вам, если DT и Server установлены на одной машине. Что касается функции, которая говорит вам, что вы работаете, нет, не существует.
Размышление вслух: DT 32-битный, сервер 64-битный. Вы можете сделать sys.path и проверить, какая версия Python используется.
или
Если вы знаете, что он работает как служба GP (а не только с использованием python-сервера) по сравнению с DT, вы можете проверить путь к arcpy.env.scratchFolder. При обычной установке он всегда будет выглядеть примерно так: C: \ arcgisserver \ directoryies \ arcgisjobs \ [service] _gpserver \ [guid] \ ....
источник
RuntimeManager
это .NET, а не COM-объект.C:\Program Files (x86)\Common Files\ArcGIS\bin\ArcGISVersion.dll
является загружаемой библиотекой типов, которая имеет много одинаковых объектов, вы можете использовать это из комтипов.