From dbdceeee2ca15e30bc76ffbd0a0291277ffc10c0 Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Thu, 9 Oct 2014 14:22:43 -0400 Subject: [PATCH] add qw-client command --- bin/qw-client | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100755 bin/qw-client diff --git a/bin/qw-client b/bin/qw-client new file mode 100755 index 0000000..70dc1e0 --- /dev/null +++ b/bin/qw-client @@ -0,0 +1,73 @@ +#!/usr/bin/env python + +import logging +import json +import os +import signal + +import docopt + +from qw.client import Client +from qw import __version__ + + +__doc__ = """Usage: + qw-client [--host=] [--port=] [--db=] managers + qw-client [--host=] [--port=] [--db=] workers [] + qw-client [--host=] [--port=] [--db=] jobs [] + qw-client [--host=] [--port=] [--db=] queue string [] + qw-client [--host=] [--port=] [--db=] queue file [] + qw-client (--help | --version) + +Options: + --help Show this help message + --version Show version information + -h --host= Set the redis host to use [default: localhost] + -p --port= Set the redis port to use [default: 6379] + -d --db= Set the redis db number to use [default: 0] +""" + +arguments = docopt.docopt(__doc__, version="qw-manager %s" % (__version__, )) +client = Client(host=arguments["--host"], port=arguments["--port"], db=arguments["--db"]) + +if arguments["managers"]: + print "All Managers:" + for manager in client.get_all_managers(): + print "\t%s" % (manager, ) + +elif arguments["workers"]: + managers = [] + if arguments[""]: + managers = [arguments[""]] + else: + managers = client.get_all_managers() + for manager in managers: + print "%s Workers:" % (manager, ) + for worker in client.get_manager_workers(manager): + print "\t%s" % (worker, ) + +elif arguments["jobs"]: + managers = [] + if arguments[""]: + managers = [arguments[""]] + else: + managers = client.get_all_managers() + + for manager in managers: + print "%s:" % (manager, ) + print "\tQueued Jobs:" + for job_id in client.get_manager_queued_jobs(manager): + print "\t %s" % (job_id, ) + print "\tPending Jobs:" + for worker in client.get_manager_workers(manager): + for job_id in client.get_worker_pending_jobs(worker): + print "\t %s - %s" % (worker, job_id) + +elif arguments["queue"]: + data = arguments[""] + if arguments["file"]: + with open(arguments[""]) as fp: + data = fp.read() + data = json.loads(data) + job_id = client.queue_job(data, manager=arguments[""]) + print "Queued Job: %s" % (job_id, )