def run_celery(study, run_mode=None): """ Run the given MerlinStudy object. If the run mode is set to "local" configure Celery to run locally (without workers). """ # Only import celery stuff if we want celery in charge from merlin.celery import app from merlin.common.tasks import queue_merlin_study adapter_config = study.get_adapter_config(override_type="local") if run_mode == "local": app.conf.task_always_eager = True app.conf.task_eager_propogates = True else: # Check for server app.connection().connect() # Send the tasks to the server queue_merlin_study(study, adapter_config)
def query_celery_queues(queues): """Return stats for queues specified. Send results to the log. """ from merlin.celery import app connection = app.connection() found_queues = [] try: channel = connection.channel() for queue in queues: try: name, jobs, consumers = channel.queue_declare(queue=queue, passive=True) found_queues.append((name, jobs, consumers)) LOG.info(f"Found queue {queue}.") except BaseException: LOG.warning(f"Cannot find queue {queue} on server.") finally: connection.close() return found_queues