6

ここにあるRabbitMQチュートリアルのデフォルトのRPCの例を変更して、RPCサーバーとして機能するこのpythonスクリプトを作成しました。私のラップトップでは問題なく動作します。しかし、これらの仕様で amazon ec2 High CPU Medium Instance で実行すると:

1.7 GiB のメモリ

5 つの EC2 コンピューティング ユニット (それぞれ 2.5 EC2 コンピューティング ユニットを備えた 2 つの仮想コア)

350 GB のインスタンス ストレージ

100% の CPU を使用します。ほぼ同じ構成の私のラップトップはこれを 4% 未満の CPU 使用率で実行しますが、ラップトップと amazon の両方でこれを Ubuntu-12.04 で実行します。

これが私のコードです

    #!/usr/bin/env python
    import pika
    import commands
    import socket
    import base64

    connection = pika.BlockingConnection(pika.ConnectionParameters(
             host='localhost'))
    channel = connection.channel()
    channel.queue_declare(queue='rpc_queue')
    def on_request(ch, method, props, body):
        #print body
        body = base64.b64decode(body)
        print body
        run = commands.getoutput(body)
        response = socket.gethostname()
        print response
        ch.basic_publish(exchange='',
                        routing_key=props.reply_to,
                        properties=pika.BasicProperties(correlation_id = \
                                                      props.correlation_id),
                        body=str(response))
        ch.basic_ack(delivery_tag = method.delivery_tag)
    channel.basic_qos(prefetch_count=1)
    channel.basic_consume(on_request, queue='rpc_queue')
    print " [x] Awaiting RPC requests"
    channel.start_consuming()

どうすればこれを修正できますか?

4

1 に答える 1

6

ついに問題を発見した。これはPikaのバグでした。この情報は、rabbitmqのメーリングリストから入手しました。pypiを介してpikaをインストールしました。pip install pika

これを修正するには、pikaをアンインストールしました

pip uninstall pika

gitから再インストールしました

pip install git+https://github.com/pika/pika.git

そしてそれはそれを解決しました。

于 2013-02-15T06:38:47.190 に答える