Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the gd-system-plugin domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/wp-includes/functions.php on line 6114

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/wp-content/themes/hworih/framework/admin/ReduxCore/inc/extensions/customizer/extension_customizer.php on line 376

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/wp-content/themes/hworih/framework/admin/ReduxCore/inc/extensions/customizer/extension_customizer.php on line 398

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/wp-content/themes/hworih/framework/admin/ReduxCore/inc/extensions/customizer/extension_customizer.php on line 416

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/wp-content/themes/hworih/framework/admin/ReduxCore/inc/extensions/customizer/extension_customizer.php on line 420

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/wp-content/themes/hworih/framework/admin/ReduxCore/inc/extensions/customizer/extension_customizer.php on line 447

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/wp-content/themes/hworih/framework/admin/ReduxCore/inc/extensions/customizer/extension_customizer.php on line 459

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/wp-content/themes/hworih/framework/admin/ReduxCore/inc/extensions/customizer/extension_customizer.php on line 478
Monitor Celery Queue Consumption Speed – Eric Scrivner
Monitor Celery Queue Consumption Speed
home // page // Monitor Celery Queue Consumption Speed

Monitor Celery Queue Consumption Speed

A lot of times when using the python Celery library it’s useful to be able to monitor how fast the queue is being consumed. This is useful if you need to do a back of the envelope to see how long  a queue will take to chew through, or just to see how the current status of the queue to make sure there aren’t any blockages. So I decided to whip up a simple script to do just that. While this is no replacement for Flower, it’s still a great little tool to have.

import argparse
import redis
import sys
import time


def celery_speed(redis_connection, celery_queue_name):
    """Display the speed at which items in the celery queue are being
    consumed.

    :param redis_connection: A connection to redis
    :type redis_connection: redis.StrictRedis
    :param celery_queue_name: Name of celery queue.
    :type celery_queue_name: str or unicode
    """
    last_value, last_time = None, None

    while True:
        try:
            curr_value = redis_connection.llen(celery_queue_name)
            curr_time = time.time()
            if last_value and last_time:
                speed = (
                    (curr_value - last_value) /
                    float(curr_time - last_time)
                )
                sys.stdout.write(
                    '{} total, {:0.02f} items/sec\r'.format(
                        curr_value, speed
                    )
                )
                sys.stdout.flush()
            last_value = curr_value
            last_time = curr_time
            time.sleep(1)
        except KeyboardInterrupt:
            print 'Shutdown'
            sys.exit()


if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description='Show speed at which celery processing queue items.'
    )
    parser.add_argument(
        '--redis-host', dest='redis_host', default='localhost',
        help='(Optional, default is localhost) The redis host'
    )
    parser.add_argument(
        '--queue-name', dest='queue_name', default='celery',
        help='(Optional, default is celery) The name of the celery queue.'
    )
    args = parser.parse_args()
    print 'host: {}, queue: {}'.format(args.redis_host, args.queue_name)
    print 'negative = queue decreasing, positive = queue increasing'
    print
    redis_host = (args.redis_host or 'localhost')
    celery_queue_name = (args.queue_name or 'celery')
    redis_connection = redis.StrictRedis(redis_host)
    celery_speed(redis_connection, celery_queue_name)

You use this script as follows:

$ celery_speed
host: localhost, queue: celery
negative = queue decreasing, positive = queue increasing

1238 total, -15.3 items/sec

You can find the whole gist below.

Complete Gist Of Code