0

我一直在尝试用一些 python 脚本创建一个 Web 服务,但似乎运气不佳。一般来说,我是 Web 服务的新手,但我真的很想弄清楚这一点。我在 Windows 7 上并使用 IIS7。该服务还需要是 SOAP。

我已经阅读了大多数与 python 和 SOAP 有关的帖子,并尝试了几乎所有不同的库,但其中大多数似乎都在我的脑海中(尤其是 ZSI/SOAPpy)。Ladon 图书馆似乎是我需要的最好的(也是最简单的),但是教程http://www.youtube.com/watch?v=D_JYjEBedk4&feature=feedlik在 5:10 把它带到了服务器。当我在 cmd 中键入 ladon2.6ctl 时,windows 似乎变得很混乱。我猜这有点不同,因为他在 Linux 上运行并使用 Apache。

有了这个,任何关于如何让 python web 服务在 Microsoft 'stuff' 上运行的提示将不胜感激,因为我一直试图弄清楚这些东西太久了。

需要注意的一件事是事情如此具体(而且看起来很奇怪)的原因是因为我拥有的脚本使用 ESRI 的“arcpy”进行了很多地理处理。

- 添加 -

Traceback on localhost:8080/TestService:
Traceback (most recent call last):
  <br>File "c:\Python26\ArcGIS10.0\lib\site-packages\ladon-0.5.1-py2.6.egg\ladon\server\wsgi_application.py", line 229, in __call__
    exec("import %s" % ','.join(self.service_list))
  File "<string>", line 1, in <module>
  File "c:\Users\r\workspace\ladon\src\testspace.py", line 3, in <module>
    class TestService2(object):
  File "c:\Users\r\workspace\ladon\src\testspace.py", line 4, in TestService2
    @ladonize(int,int,rtype=int)
  File "c:\Python26\ArcGIS10.0\lib\site-packages\ladon-0.5.1-py2.6.egg\ladon\ladonizer\decorator.py", line 87, in decorator
    ladon_method_info = global_service_collection().add_service_method(f,*def_args,**def_kw)
  File "c:\Python26\ArcGIS10.0\lib\site-packages\ladon-0.5.1-py2.6.egg\ladon\ladonizer\collection.py", line 119, in add_service_method
    sinfo = self.source_info(src_fname)
  File "c:\Python26\ArcGIS10.0\lib\site-packages\ladon-0.5.1-py2.6.egg\ladon\ladonizer\collection.py", line 79, in source_info
    a = ast.parse(src)
  File "c:\Python26\ArcGIS10.0\lib\ast.py", line 37, in parse
    return compile(expr, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
     from ladon.ladonizer import ladonize

^
 SyntaxError: invalid syntax

示例代码:

from ladon.ladonizer import ladonize

class TestService2(object):
    @ladonize(int,int,rtype=int)
    def sum(self,a,b):
        '''add two numbers<br>
        param a: number 1
        param b: number 2
        rtype: sum of result
        '''
        return a+b
4

2 回答 2

1

我必须承认我通常在几乎所有事情上都使用 Linux,而且我有一段时间没有在 Windows 上尝试过 Ladon。我将在今天晚些时候启动我的 Windows 安装,看看是否有任何问题。

你写的 ladon2.6ctl 弄得一头雾水。你有异常 Traceback 吗?

于 2011-07-10T11:18:04.927 回答
0

要为其他感兴趣的人总结修复,请从以下 3 个 ladon 模块中删除“syslog 导入”:
ladon/interfaces/jsonwsp.py - 第 6 行
ladon/dispatcher/dispatcher.py - 第 7 行
ladon/server/wsgi_application.py - 行37

然后,您需要将换行从窗口默认的 /r/n 更改为 /n。在 Eclipse 中,转到 Window -> Preferences -> General,然后选择(不是下拉)Workspace 选项卡。在右下角,选择新文本文件行分隔符下的“其他”并将其更改为 Unix。

于 2011-07-11T20:14:42.057 回答