12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import logging
- from django.conf import settings
- from django.core.management.base import BaseCommand
- from django.utils.module_loading import autodiscover_modules
- from huey.consumer import Consumer
- from huey.consumer_options import ConsumerConfig
- from huey.consumer_options import OptionParserHandler
- logger = logging.getLogger(__name__)
- class Command(BaseCommand):
- """
- Queue consumer. Example usage::
- To start the consumer (note you must export the settings module):
- django-admin.py run_huey
- """
- help = "Run the queue consumer"
- _type_map = {'int': int, 'float': float}
- def add_arguments(self, parser):
- option_handler = OptionParserHandler()
- groups = (
- option_handler.get_logging_options(),
- option_handler.get_worker_options(),
- option_handler.get_scheduler_options(),
- )
- for option_list in groups:
- for short, full, kwargs in option_list:
- if short == '-v':
- full = '--huey-verbose'
- short = '-V'
- if 'type' in kwargs:
- kwargs['type'] = self._type_map[kwargs['type']]
- kwargs.setdefault('default', None)
- parser.add_argument(full, short, **kwargs)
- def handle(self, *args, **options):
- from huey.contrib.djhuey import HUEY
- consumer_options = {}
- try:
- if isinstance(settings.HUEY, dict):
- consumer_options.update(settings.HUEY.get('consumer', {}))
- except AttributeError:
- pass
- for key, value in options.items():
- if value is not None:
- consumer_options[key] = value
- consumer_options.setdefault('verbose',
- consumer_options.pop('huey_verbose', None))
-
- autodiscover_modules("tasks")
- config = ConsumerConfig(**consumer_options)
- config.validate()
- config.setup_logger()
- consumer = Consumer(HUEY, **config.values)
- consumer.run()
|