Use django.utils.autoreload to restart queue workers at code change.

Fixes #621, #1045.
This commit is contained in:
rahuldeve
2016-06-23 23:30:27 +05:30
committed by Tim Abbott
parent 61d1de19cf
commit a3745178e5

View File

@@ -6,6 +6,7 @@ from argparse import ArgumentParser
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.core.management import CommandError from django.core.management import CommandError
from django.conf import settings from django.conf import settings
from django.utils import autoreload
from zerver.worker.queue_processors import get_worker, get_active_worker_queues from zerver.worker.queue_processors import get_worker, get_active_worker_queues
import sys import sys
import signal import signal
@@ -32,11 +33,14 @@ class Command(BaseCommand):
logger.error("Cannot run a queue processor when USING_RABBITMQ is False!") logger.error("Cannot run a queue processor when USING_RABBITMQ is False!")
sys.exit(1) sys.exit(1)
if options['all']: def run_threaded_workers(logger):
for queue_name in get_active_worker_queues(): for queue_name in get_active_worker_queues():
logger.info('launching queue worker thread ' + queue_name) logger.info('launching queue worker thread ' + queue_name)
td = Threaded_worker(queue_name) td = Threaded_worker(queue_name)
td.start() td.start()
if options['all']:
autoreload.main(run_threaded_workers, (logger,))
else: else:
queue_name = options['queue_name'] queue_name = options['queue_name']
worker_num = options['worker_num'] worker_num = options['worker_num']