| @ -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=<host>] [--port=<port>] [--db=<db>] managers | |||||
| qw-client [--host=<host>] [--port=<port>] [--db=<db>] workers [<manager>] | |||||
| qw-client [--host=<host>] [--port=<port>] [--db=<db>] jobs [<manager>] | |||||
| qw-client [--host=<host>] [--port=<port>] [--db=<db>] queue string <data> [<manager>] | |||||
| qw-client [--host=<host>] [--port=<port>] [--db=<db>] queue file <file> [<manager>] | |||||
| qw-client (--help | --version) | |||||
| Options: | |||||
| --help Show this help message | |||||
| --version Show version information | |||||
| -h --host=<host> Set the redis host to use [default: localhost] | |||||
| -p --port=<port> Set the redis port to use [default: 6379] | |||||
| -d --db=<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["<manager>"]: | |||||
| managers = [arguments["<manager>"]] | |||||
| 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["<manager>"]: | |||||
| managers = [arguments["<manager>"]] | |||||
| 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["<data>"] | |||||
| if arguments["file"]: | |||||
| with open(arguments["<file>"]) as fp: | |||||
| data = fp.read() | |||||
| data = json.loads(data) | |||||
| job_id = client.queue_job(data, manager=arguments["<manager>"]) | |||||
| print "Queued Job: %s" % (job_id, ) | |||||