def handle(self, *args, **options): # type: (*Any, **str) -> None queue_name = options['queue_name'] queue = SimpleQueueClient() queue.ensure_queue(queue_name, lambda: None) queue.channel.queue_purge(queue_name) print("Done")
def handle(self, *args: Any, **options: Any) -> None: print("Purging queue...") queue = SimpleQueueClient() queue_name = "noop_batch" if options["batch"] else "noop" queue.ensure_queue(queue_name, lambda channel: channel.queue_purge("noop")) count = options["count"] reps = options["reps"] with open(options["csv"], "w", newline="") as csvfile: writer = csv.DictWriter( csvfile, fieldnames=["Queue size", "Queue type", "Prefetch", "Rate"]) writer.writeheader() for prefetch in options["prefetches"]: print(f"Queue size {count}, prefetch {prefetch}...") worker: Union[NoopWorker, BatchNoopWorker] = NoopWorker( count, options["slow"]) if options["batch"]: worker = BatchNoopWorker(count, options["slow"]) if prefetch > 0 and prefetch < worker.batch_size: print( f" Skipping, as prefetch {prefetch} is less than batch size {worker.batch_size}" ) continue worker.ENABLE_TIMEOUTS = True worker.setup() assert worker.q is not None assert worker.q.channel is not None worker.q.channel.basic_qos(prefetch_count=prefetch) total_time = 0.0 for i in range(1, reps + 1): worker.consumed = 0 timeit( lambda: queue_json_publish(queue_name, {}), number=count, ) duration = timeit( lambda: worker.start(), number=1, ) print( f" {i}/{reps}: {count}/{duration}s = {count / duration}/s" ) total_time += duration writer.writerow({ "Queue size": count, "Queue type": queue_name, "Prefetch": prefetch, "Rate": count / duration, }) csvfile.flush() print( f" Overall: {reps * count}/{total_time}s = {(reps * count) / total_time}/s" )
def handle(self, *args: Any, **options: Any) -> None: print("Purging queue...") queue = SimpleQueueClient() queue_name = "noop_batch" if options["batch"] else "noop" queue.ensure_queue(queue_name, lambda channel: channel.queue_purge("noop")) count = options["count"] reps = options["reps"] worker: QueueProcessingWorker = NoopWorker(count, options["slow"]) if options["batch"]: worker = BatchNoopWorker(count, options["slow"]) worker.ENABLE_TIMEOUTS = True worker.setup() assert worker.q is not None assert worker.q.channel is not None worker.q.channel.basic_qos(prefetch_count=options["prefetch"]) total_enqueue_time = 0.0 total_dequeue_time = 0.0 def one_rep() -> None: nonlocal total_enqueue_time, total_dequeue_time total_enqueue_time += timeit( lambda: queue_json_publish(queue_name, {}), number=count, ) total_dequeue_time += timeit( lambda: worker.start(), number=1, ) rate = lambda time, iterations: int(iterations / time) total_reps_time = timeit(one_rep, number=reps) if reps > 1: print(f"Total rate per rep: {rate(total_reps_time, reps)} / sec") print(f"Enqueue rate: {rate(total_enqueue_time, count * reps)} / sec") print(f"Dequeue rate: {rate(total_dequeue_time, count * reps)} / sec")
def purge_queue(queue_name: str) -> None: queue = SimpleQueueClient() queue.ensure_queue(queue_name, lambda channel: channel.queue_purge(queue_name))
def purge_queue(queue_name: str) -> None: queue = SimpleQueueClient() queue.ensure_queue(queue_name, lambda: None) queue.channel.queue_purge(queue_name)
def purge_queue(queue_name): # type: (str) -> None queue = SimpleQueueClient() queue.ensure_queue(queue_name, lambda: None) queue.channel.queue_purge(queue_name)
def handle(self, *args, **options): queue_name = options["queue_name"] queue = SimpleQueueClient() queue.ensure_queue(queue_name, lambda: None) queue.channel.queue_purge(queue_name) print "Done"