【问题标题】:Using Ladon in Python 2.6 on windows在 Windows 上的 Python 2.6 中使用 Ladon
【发布时间】:2011-07-09 22:40:19
【问题描述】:

我一直在尝试用一些 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。

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

需要注意的一点是,事情之所以如此具体(而且看起来很奇怪),是因为我拥有的脚本使用 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

【问题讨论】:

    标签: python web-services soap arcgis zsi


    【解决方案1】:

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

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

    【讨论】:

    • 我刚刚在 Windows 上安装了 Ladon。事实证明,在我几个月前用来调试 LadonWSGIApplication 类的 3 个不同的 ladon 模块中有 syslog 导入。这些 syslog 导入应该在我完成后被删除,但我忘记了。无论如何,syslog 函数不会在任何地方使用,因此您可以在本地删除它们 - ladon/interfaces/jsonwsp.py[6] ladon/dispatcher/dispatcher.py[7] ladon/server/wsgi_application.py[37]。我当然已经从 launchpad.net 上的源树中删除了导入,因此计划于 8 月 1 日发布的 Ladon 0.6.1 的下一个版本应该可以开箱即用。
    • 我冒昧地将其添加为bug - 这是处理像您这样的案例的正确方法。我希望这会有所帮助:-) Ladon in action on Windows
    • 我在问题中添加了回溯,非常感谢您的帮助。
    • 最后的回溯看起来像是服务类模块中的语法错误——可能是缩进错误。尝试启动 python 解释器并手动导入模块。如果你想让我看,你把你的服务模块上传到 pastebin.com。
    • 它在 pastebin.com 上 24 小时,标题为“Ladon 和 Python”。我不认为这是一个缩进错误。如果错误是第一行,可能是导入 ladon 的问题?再次感谢您的帮助。
    【解决方案2】:

    为其他感兴趣的人总结修复,请从以下 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 选项卡。右下角New text file line delimiter下选择“other”,改成Unix。

    【讨论】:

    • 非常感谢您的帮助,雅各布。
    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2011-02-17
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多