Prepare process_queue to be used with supervisor's numprocs

(imported from commit 5a652b93f1e8b32b5ed89d622035161abaedfb11)
This commit is contained in:
Zev Benjamin
2013-09-06 15:58:15 -04:00
parent 90ee96d456
commit 871afde142

View File

@@ -9,24 +9,30 @@ import signal
import logging
class Command(BaseCommand):
args = "<queue name>"
args = "<queue name> [<worker number>]"
help = "Runs a queue processing worker"
def handle(self, *args, **options):
logging.basicConfig()
logger = logging.getLogger('process_queue')
if len(args) != 1:
if len(args) not in (1, 2):
raise CommandError("Wrong number of arguments")
queue_name = args[0]
if len(args) > 1:
worker_num = int(args[1])
else:
worker_num = 0
def signal_handler(signal, frame):
logger.info("Disconnecting from queue")
logger.info("Worker %d disconnecting from queue %s" % (worker_num, queue_name))
worker.stop()
sys.exit(0)
signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGINT, signal_handler)
logger.info("Connecting to queue")
worker = get_worker(args[0])
logger.info("Worker %d connecting to queue %s" % (worker_num, queue_name))
worker = get_worker(queue_name)
worker.start()