2013-02-14 13 views
6

Przeszukuję ten skrypt Pythona, który działa jako serwer RPC, modyfikując domyślny przykład RPC w samouczku RabbitMQ znalezionym here. Działa dobrze w moim laptopie. Ale gdy uruchamiam go w Amazon EC2 wysoka CPU Średnio Instancji z tymi specyfikacjami:Skrypt roboczy RabbitMQ dla robotów używający procesora 100%

1,7 GiB pamięci

5 EC2 Compute Units (2 wirtualne rdzenie o 2,5 jednostki EC2 obliczania każdej)

350 GB pamięci instancji

Zajmuje 100% CPU. Chociaż mój laptop z prawie taką samą konfiguracją działa z mniej niż 4% wykorzystaniem procesora. Uruchomiłem to w Ubuntu-12.04 zarówno w laptopie, jak i amazon.

Oto mój kod

#!/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() 

Jak mogę rozwiązać ten problem?

Odpowiedz

5

Wreszcie znaleziono problem. To był błąd w Pika, mam te informacje z listy mailingowej rabbitmqa. Zainstalowałem pika przez pypi. pip install pika.

Aby rozwiązać ten problem i odinstalowane pika

pip uninstall pika

i ponownie zainstalować go z git

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

I to rozwiązało.

+1

Byłoby wspaniale, gdybyś mógł podać link do problemu. Wiem, to bardzo długo. ale to bardzo pomaga! –

+0

@HariKrishnan to jest błąd https://github.com/pika/pika/issues/361 –

Powiązane problemy