def handle(self, *args, **options): from huey.contrib.djhuey import HUEY # Python 3.8+ on MacOS uses an incompatible multiprocess model. In this # case we must explicitly configure mp to use fork(). if sys.version_info >= (3, 8) and sys.platform == 'darwin': # Apparently this was causing a "context has already been set" # error for some user. We'll just pass and hope for the best. # They're apple users so presumably nothing important will be lost. import multiprocessing try: multiprocessing.set_start_method('fork') except RuntimeError: pass 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)) if not options.get('disable_autoload'): autodiscover_modules("tasks") logger = logging.getLogger('huey') config = ConsumerConfig(**consumer_options) config.validate() # Only configure the "huey" logger if it has no handlers. For example, # some users may configure the huey logger via the Django global # logging config. This prevents duplicating log messages: if not logger.handlers: config.setup_logger(logger) consumer = HUEY.create_consumer(**config.values) consumer.run()