Esempio n. 1
0
    def __init__(self, job_poll_interval = 10):
        self.reaper_id = uuid.uuid1().hex
        self.messagebus = MessageBus()
        self.chan = self.messagebus.channel
        self.is_registered = None
        
        self.JOB_POLL_INTERVAL = job_poll_interval
        self.CONTROL_QUEUE_NAME = "rpc.reaper.%s" % self.reaper_id
        self.REPLY_QUEUE_NAME = "reply.reaper.%s" % self.reaper_id # queue for RPC responses
        self.logger = logging.getLogger('reaper.%s' % self.reaper_id)
        #self.logger.setLevel(logging.DEBUG)
        

        # Accept control commands via the control exchange:
        self.chan.exchange_declare(self.CONTROL_EXCHANGE_NAME, type='direct')
        self.chan.queue_declare(queue=self.CONTROL_QUEUE_NAME, durable=False, auto_delete=True)
        self.chan.queue_bind(queue=self.CONTROL_QUEUE_NAME, exchange=self.CONTROL_EXCHANGE_NAME, routing_key=self.CONTROL_QUEUE_NAME)
        
        # RPC Service to dispatch

        self.dispatch = DispatchService(reply_queue=self.REPLY_QUEUE_NAME, )

        # Init threads to handle message consumption
        self.shutdown_event = threading.Event()
        self.control_listener = ConsumptionThread(mode='GET', shutdown_event=self.shutdown_event, name="control_listener")
Esempio n. 2
0
#!/usr/bin/env python2.6
import sys, logging
from datetime import datetime, timedelta
import optparse
sys.path.insert(0, '..')
from ngt.dispatch.services import DispatchService
logging.getLogger('amqprpc').setLevel(logging.WARNING)

print "init"

dispatch = DispatchService(reply_queue='reply.throughput_test')
reaper_id = '00000000'
report_interval = timedelta(seconds=2)

def testloop():
    jobcount = 0
    t0 = datetime.now()
    while True:
        tr0 = datetime.now()
        dispatch.get_a_job(reaper_id)
        jobcount += 1
        dtr = datetime.now() - tr0
        if options.stopwatch:
            print "Got a job in %s" % str(dtr)
        dt = datetime.now() - t0
        if dt > report_interval:
            if options.throughput:
                print "Throughput: %f jobs/sec" % (jobcount / (dt.seconds + dt.microseconds * 1e-6))
            jobcount = 0
            t0 = datetime.now()