ZeroRPC和IronPython

时间:2014-11-03 17:20:30

标签: python ironpython rpc zeromq

我真的想在我使用IronPython的项目中使用优秀的zerorpc,但它似乎不受支持。

我尝试下载zerorpc的源代码拉链并运行

"C:\Program Files (x86)\IronPython 2.7\ipy.exe" setup.py install

但我在此过程中看到了这一点:

warning: build_py: byte-compiling is disabled, skipping.

这与答案不一致:Fast and scalable RPC between C# and CPython

我的问题:

  1. 是否有可能让zerorpc与IronPython一起运行?如果是的话,请你给我一些如何做的提示?
  2. 如果没有,那么是否还有其他可以提供IronPython功能的等效包?这里有一个列表:What is the current choice for doing RPC in Python?,但有人知道这些是否与IronPython一起使用?

  3. 更新2 根据@PawelJasinski的建议以及他对pyzmq ironpython-backend的更新,我尝试了以下内容:

    1. 安装IronPython 2.7.5b2或更高版本
    2. http://zeromq.org/distro:microsoft-windows
    3. 安装了32位版本的zeromq
    4. https://github.com/paweljasinski/pyzmq/tree/ironpython-backend
    5. 克隆ironpython-backend分支
    6. pyzmq目录中,运行ipy.exe setup.py install --user
    7. 来自https://github.com/dotcloud/zerorpc-python
    8. 的克隆zerorpc
    9. zerorpc-python中,运行ipy.exe setup.py install --user
    10. 设置环境变量:set PYZMQ_BACKEND=zmq.backend.ctypes
    11. 尝试使用https://github.com/dotcloud/zerorpc-python中的'Cooler'类示例,并使用ipy.exe -X:Frames cooler.py
    12. 运行

      (cooler.py):

      class Cooler(object):
          """ Various convenience methods to make things cooler. """
      
          def add_man(self, sentence):
              """ End a sentence with ", man!" to make it sound cooler, and
              return the result. """
              return sentence + ", man!"
      
          def add_42(self, n):
              """ Add 42 to an integer argument to make it cooler, and return the
              result. """
              return n + 42
      
          def boat(self, sentence):
              """ Replace a sentence with "I'm on a boat!", and return that,
              because it's cooler. """
              return "I'm on a boat!"
      
      import zerorpc
      
      s = zerorpc.Server(Cooler())
      s.bind("tcp://0.0.0.0:4242")
      s.run()
      

      现在我看到了这个错误:

      Traceback (most recent call last):
        File "C:\Users\nlindop\AppData\Roaming\Python\IronPython27\site-packages\zmq\backend\select.py", line 26, in select_backend
        File "C:\Users\nlindop\AppData\Roaming\Python\IronPython27\site-packages\zmq\backend\ctypes\__init__.py", line 26, in <module>
        File "C:\Users\nlindop\AppData\Roaming\Python\IronPython27\site-packages\zmq\backend\ctypes\constants.py", line 16, in <module>
      ImportError: No module named ZMQ
      

2 个答案:

答案 0 :(得分:2)

ZeroRPC似乎是纯Python,基于pyzmq。在这种情况下,您可以为IronPython尝试pyzmq ctypes后端。 https://github.com/paweljasinski/pyzmq/tree/ironpython-backend

  • 使用IronPython 2.7.5b2或更新版
  • http://zeromq.org/distro:microsoft-windows
  • 安装32位版本的zmq
  • 安装pyzmq本身,克隆,而不是ipy.exe setup.py install --user。安装应检测您的zmq并选择正确的dll
  • 激活ctypes后端,设置环境变量PYZMQ_BACKEND=zmq.backend.ctypes

更新:ZeroRPC依赖于gevent,这在IronPython下是不可用的,因此上述说明仅适用于IronPython下的pyzmq

答案 1 :(得分:2)

问题的第二部分。 pyro(及其依赖serpent)支持IronPython和Jython。

警告:远离IronPython 2.7.5b3 - 它有bug打破蛇。 2.7.4和2.7.5b2都可以。接下来2.7.5有一个修复。