Example #1
0
 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")
Example #2
0
    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"
                )
Example #3
0
    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")
Example #4
0
 def purge_queue(queue_name: str) -> None:
     queue = SimpleQueueClient()
     queue.ensure_queue(queue_name,
                        lambda channel: channel.queue_purge(queue_name))
Example #5
0
 def purge_queue(queue_name: str) -> None:
     queue = SimpleQueueClient()
     queue.ensure_queue(queue_name, lambda: None)
     queue.channel.queue_purge(queue_name)
Example #6
0
 def purge_queue(queue_name):
     # type: (str) -> None
     queue = SimpleQueueClient()
     queue.ensure_queue(queue_name, lambda: None)
     queue.channel.queue_purge(queue_name)
Example #7
0
 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"