1

ZeroRPC Web サイトから Python server/node.js クライアント HelloWorld の例を実行しようとしています。revelant ライブラリはすべて正しくインストールされているように見えますが、サンプルを実行すると次のエラーが表示されます。

{ name: 'HeartbeatError',
  message: 'Lost remote after 10000ms',
  traceback: '' }

誰もこれを見たことがありますか?

4

2 に答える 2

2

私は "zeropc": "^0.9.3" を使用しています。時間のかかる Python コードを実行していたときに、同じ問題に遭遇しました。この問題を解決するには、zerorpc のライブラリ コードを変更する必要があります。 node_modules -> zerorpc -> lib -> channel.js 対応するメソッドを次のように変更します。

//Runs the heartbeat on this channel
Channel.prototype._runHeartbeat = function() {
    var self = this;

    return setInterval(function() {
        if(util.curTime() > self._heartbeatExpirationTime) {
            //If we haven't received a response in 2 * heartbeat rate, send an
            //error
//            self.emit("heartbeat-error", "Lost remote after " + (HEARTBEAT * 2) + "ms");
//            self.close();
        }

        //Heartbeat on the channel
        try {
            var event = events.create(self._envelope, self._createHeader(), "_zpc_hb", [0]);
            self._socket.send(event);
        } catch(e) {
            console.error("Error occurred while sending heartbeat:", e);
        }
    }, HEARTBEAT);
};

github の最新コード: https://github.com/dotcloud/zerorpc-node では、この問題が解決されています。

于 2014-07-08T22:28:45.523 に答える
0

可能であれば、gevent.sleep を使用して、ハートビートを含む待機中のメッセージを処理するのに十分な時間を zerorpc に与えます。

于 2016-07-01T13:09:10.940 に答える