0

Ubuntu 12.04 で Python 2.7.3 と Node.js 0.10.37 を使用しており、zerorpc を使用してノード js から python を呼び出しています。私の python はポート 9004 で実行され、ノード クライアントは 9004 ポートをリッスンします。Node js から Python でメソッドを呼び出しているときに、以下のエラーが発生します。

ERROR:zerorpc.channel:zerorpc.ChannelMultiplexer ignoring error on recv
Traceback (most recent call last):

File "/usr/local/lib/python2.7/dist-packages/zerorpc/channel.py", line 79, in _channel_dispatcher 
    event = self._events.recv()
File "/usr/local/lib/python2.7/dist-packages/zerorpc/events.py", line 341, in recv      
    event = Event.unpack(get_pyzmq_frame_buffer(blob))
File "/usr/local/lib/python2.7/dist-packages/zerorpc/events.py", line 198, in unpack    
    unpacked_msg = unpacker.unpack()
File "/usr/local/lib/python2.7/dist-packages/msgpack/fallback.py", line 570, in unpack  
    ret = self._fb_unpack(EX_CONSTRUCT, write_bytes)
File "/usr/local/lib/python2.7/dist-packages/msgpack/fallback.py", line 498, in _fb_unpack
    typ, n, obj = self._read_header(execute, write_bytes)
File "/usr/local/lib/python2.7/dist-packages/msgpack/fallback.py", line 347, in _read_header
    b = ord(c)
TypeError: ord() expected string of length 1, but memoryview found

私の Node.js クライアント側コード:

var express = require('express');
var zerorpc = require('zerorpc');
var router = express.Router();

var client = new zerorpc.Client({timeout:30, heartbeatInterval:30000});
client.connect("tcp://0.0.0.0:9004");

router.post('/validateUser/', function(req, res, next){
    var user_name = req.body.user_name;
    client.invoke("validate_user", user_name, function(request, response, more){
        res.send(response);
    });
});

私のPythonコード:

import zerorpc
class User():

    def validate_user(self, user_name):
        print user_name

if __name__ == "__main__":
    obj = User()
    s = zerorpc.Server(obj)
    s.bind("tcp://0.0.0.0:9004")
    s.run()

Pythonのprintステートメントでさえ実行されていません。

zerorpcとzmqをアンインストールして再インストールしてみました。しかし、それでも同じエラー、同じコードが同じアーキテクチャの別の Ubuntu マシンで動作していました。

4

0 に答える 0