0

私は Mcollective 2.2.x を使用しており、チュートリアルに従ってエージェントを作成しました。

「hello」という名前のエージェントには「speak」というアクションがあり、「speak」アクション内で、以下のコードを使用して XML-RPC を介して Python メソッドを呼び出します。

Mcollective の Ruby エージェント <--

require "xmlrpc/client"

module MCollective
  module Agent
    class Hello<RPC::Agent
      # Basic system inventory, same as the basic discovery agent
      action "speak" do

        server = XMLRPC::Client.new('localhost', nil, 8888)
        s = server.call('testls', request[:msg])

        reply[:resultmsg] = s

      end

    end

  end
end

-->

Python XML-RPC コード:

<--

from SimpleXMLRPCServer import SimpleXMLRPCServer

def testls(msg):
    print(msg)
    return msg

server = SimpleXMLRPCServer(('localhost',8888))
server.register_function(testls)
try:
    server.serve_forever()
finally:
    server.server_close()

-->


これが私の問題です。mcollective が実行されている状態で、次のコマンドで hello エージェントを呼び出します。

mco rpc hello speak msg='hello' -v 

その後、Mcollective プロセスは「スタック レベルが深すぎます」というエラーでクラッシュし、エラーの場所は「$mcollective_path/lib/mcollective/agents.rb」の 132 行目で、コードは「yield(replies) #This is where everything crashes」です。

しかし、最初にこのコマンドを実行すると:

mco rpc hello speak msg='hello' -v --nr"(結果を処理せず、一度だけ)

次に mco rpc hello speak msg='hello' -v`

今はすべて問題なく、エラーは発生しません

なぜこれが起こっているのかわからない、この種の私は狂っている

誰かが助けてくれたら感謝します!

4

0 に答える 0