2015-08-07 6 views
2

Я уже несколько дней ударил головой о стену, мне нужна помощь. Я пытаюсь создать службу геообработки (которая будет использоваться через средство просмотра flex), которая принимает информацию о разрешении от GDB, записывает ее в файл и затем открывает ее на компьютере пользователя.Python Script не работает должным образом, поскольку служба геообработки

Сценарий, который я написал, отлично работает на локальных компьютерах и при запуске с самого сервера. Однако, как только скрипт был опубликован как служба геообработки, он прекращает открытие файла.

Файл создается на веб-сервере и затем открывается через URL-адрес, чтобы пользователь мог затем сделать локальную копию, распечатать для подписи и т. Д. Файл все еще создается, называется и помещается в соответствующее папка, она просто не открывается в конце процесса. (Служба GP рассматривает как завершенные, хотя, это не обязательно)

Здесь конец кода, который является частью отношение к моему вопросу:

f = open(r'\\MyWebAddressHere\\Reports\\Permit' + str(PermitNumber) +'.html','w') 

f.write(permitStart)   
if (BasePermitFee > 0): 
    f.write(permitBaseFee)   
if (PlumbingFee > 0): 
    f.write(permitPlumbingFee)   
if (ElectricFee > 0): 
    f.write(permitElectricFee)    
if (TotalFees > 0): 
    f.write(permitTotalFee) 
f.write(permitEnd) 

f.close()    

webbrowser.open('MyWebAddressHere/Reports/Permit' + str(PermitNumber) +'.html') 

Кто-нибудь есть предложение о том, почему открыта неудача после публикации службы GP?

ответ

0

Оказывается, что команда webbrowser не работает в серверной среде.

Мне удалось сбить с толку аналитика сервера ESRI с этим, потому что, по-видимому, нет документации, в которой говорится, что это не будет работать в серверной среде, а просто нет. Таким образом, он был зарегистрирован как ошибка.

1

Я не считаю это ошибкой - команда webbrowser не имеет смысла в контексте службы GP. Подумайте о том, что выполняется там.

Если вы запускаете код локально, Python работает на вашем реальном компьютере - на этом компьютере есть логин, дисплей, набор установленных программ. Говорить об открытии веб-браузера имеет смысл, потому что на этом компьютере установлен один или несколько браузеров.

Запустите его на сервере, заходя на сервер, и то же самое - у вас все еще есть логин, набор установленных программ. Хотя вы можете заблокировать сервер, чтобы уменьшить его уязвимость, вероятно, по-прежнему есть хотя бы одна установленная программа, способная просматривать Интернет.

Но когда вы запускаете скрипт как инструмент GP, вы находитесь в другом мире. Вы не используете код локально, а вы не заходите на сервер. Если вы выполните команду webbrowser, где следует открыть окно браузера?

  • На вашем компьютере? Он не может - окружение GP сервера не может выполнять случайные программы на вашем ПК, что было бы серьезной дырой в безопасности. Эй, я напишу сценарий, который удалит все в C: \ Windows и опубликует его в ArcGIS Online!
  • На сервере? Кто бы это увидел? Ни один не зарегистрирован.