Python脚本不能作为地理处理服务正常工作

时间:2015-08-07 21:39:34

标签: python flex gis arcgis-server

我已经把头撞在墙上好几天了,我需要帮助。 我正在尝试创建一个地理处理服务(将通过Flex查看器使用),该服务从GDB获取许可信息,将其写入文件,然后在用户的计算机上打开它。

我编写的脚本在本地计算机上以及从服务器本身运行时都能很好地工作。 但是,只要脚本作为地理处理服务发布,它就会停止打开该文件。

该文件在Web服务器上创建,然后通过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服务发布后公开失败的原因是什么?

2 个答案:

答案 0 :(得分:1)

我不认为这是一个错误 - webbrowser命令在GP服务的上下文中没有任何意义。想想在哪里执行什么。

如果您在本地运行代码,Python就会在您的实际计算机上运行 - 该计算机具有登录名,显示器和一组已安装的程序。告诉它打开Web浏览器是有道理的,因为您在该计算机上安装了一个或多个浏览器。

在服务器上运行它,同时登录到服务器,同样的事情 - 你仍然有一个登录,一组已安装的程序。虽然您可能会锁定服务器以减少其漏洞,但它可能仍然至少安装了一个能够浏览互联网的程序。

但是当您将脚本作为GP工具运行时,您将处于另一个世界。您未在本地运行代码,您未登录服务器。如果执行{{1}}命令,它应该在哪里打开浏览器窗口?

  • 在你的电脑上?它无法 - 服务器的GP环境无法在您的PC上执行随机程序,这将是一个巨大的安全漏洞。嘿,我会编写一个脚本来删除C:\ Windows中的所有内容并将其发布到ArcGIS Online上!
  • 在服务器上?谁会看到它?没有人登录。

答案 1 :(得分:0)

原来,webbrowser命令flat out在服务器环境中不起作用。

我设法将ESRI服务器分析师与此人混淆了,因为显然没有文档说这不会在服务器环境中工作,它只是没有。因此它已被记录为错误。