def connect_if_not_connected(cls): """Connect to Celery if not already connected, do it safely as we have concurrent server""" if cls._connected: return with cls._setup_lock: if not cls._connected: # We do not have to have result backend on server since we are just pushing tasks to message queue init_celery(result_backend=False)
def construct_analyses_report(ecosystem, from_date=None, to_date=None): """Construct analyses state report. :param ecosystem: name of the ecosystem :param from_date: datetime limitation :type from_date: datetime.datetime :param to_date: datetime limitation :type to_date: datetime.datetime :return: a dict describing the current system state :rtype: dict """ report = { 'report': {}, 'from_date': str(from_date) if from_date else None, 'to_date': str(to_date) if to_date else None, 'now': str(datetime.now()) } # TODO: init only Selinon # there is required only Selinon configuration, we don't need to connect to queues, # but let's stick with this for now init_celery(result_backend=False) db = StoragePool.get_connected_storage('BayesianPostgres') finished_analyses = _get_finished_analyses_count(db, ecosystem, from_date, to_date) unfinished_analyses = _get_unfinished_analyses_count( db, ecosystem, from_date, to_date) report['report']['ecosystem'] = ecosystem report['report']['analyses'] = finished_analyses + unfinished_analyses report['report']['analyses_finished'] = finished_analyses report['report']['analyses_unfinished'] = unfinished_analyses report['report'][ 'analyses_finished_unique'] = _get_unique_finished_analyses_count( db, ecosystem, from_date, to_date) report['report']['analyses_unique'] = _get_unique_analyses_count( db, ecosystem, from_date, to_date) report['report']['packages'] = _get_packages_count(db, ecosystem, from_date, to_date) report['report']['versions'] = _get_versions_count(db, ecosystem, from_date, to_date) return report
#!/usr/bin/env python import logging from celery import Celery from cucoslib.setup_celery import init_celery # remove too verbose logs from third-party libraries logging.getLogger('boto').setLevel(logging.WARNING) logging.getLogger('boto3').setLevel(logging.WARNING) logging.getLogger('botocore').setLevel(logging.WARNING) app = Celery('tasks') init_celery(app)
def _init_celery(self): """ Initialize celery and connect to the broker """ if not self._initialized_celery: init_celery(result_backend=False) self._initialized_celery = True