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?
Byłoby wspaniale, gdybyś mógł podać link do problemu. Wiem, to bardzo długo. ale to bardzo pomaga! –
@HariKrishnan to jest błąd https://github.com/pika/pika/issues/361 –