def queue(queue_id='default'): ''' Fetches the number of jobs being processed at a determinate queue endpoint. ''' result = getStatus(queue_id) return flask.jsonify(**result)
def computeUsers(): ''' Computes information about all users from a CKAN instance. ''' key = 'users' status = getStatus(key) queue = Queue(connection=Redis(host=REDIS_HOST), name=key) objects = ckan.action.user_list() if status['empty']: for object in objects: job = queue.enqueue(fetchAndStore, key, object['id']) response = { 'success': True, 'message': 'Computing user information. {n} before finished.'.format(n=status['count']), 'endpoint': key, 'time': None, 'ETA': None, 'computations': { 'total': len(objects), 'completed': len(objects) - status['count'], 'queued': status['count'], 'progress': round(((len(objects) - status['count']) / len(objects)) * 100, 2) } } return flask.jsonify(**response)
def computeCountries(): ''' Computes information about all countries of a CKAN instance. ''' key = 'countries' status = getStatus(key) queue = Queue(connection=Redis(host=REDIS_HOST), name=key) countries = ckan.action.group_list() if status['empty']: for country in countries: job = queue.enqueue(fetchAndStore, key, country) response = { 'success': True, 'message': 'Computing countries information. {n} before finished.'.format(n=status['count']), 'endpoint': key, 'time': None, 'ETA': None, 'computations': { 'total': len(countries), 'completed': len(countries) - status['count'], 'queued': status['count'], 'progress': round(((len(countries) - status['count']) / len(countries)) * 100, 2) } } return flask.jsonify(**response)
def computeResources(): ''' Computes information about all resources from a CKAN instance. ''' # # TODO: there aren't resource_list # method to list all resources from a # a CKAN instance. # # This route should not be registered # right now. # key = 'resources' status = getStatus(key) queue = Queue(connection=Redis(host=REDIS_HOST), name=key) objects = ckan.action.package_list() if status['empty']: for object in objects: job = queue.enqueue(fetchAndStore, key, object) response = { 'success': True, 'message': 'Computing resource information. {n} before finished.'.format( n=status['count']), 'endpoint': key, 'time': None, 'ETA': None, 'computations': { 'total': len(objects), 'completed': len(objects) - status['count'], 'queued': status['count'], 'progress': round(((len(objects) - status['count']) / len(objects)) * 100, 2) } } return flask.jsonify(**response)
def computeCountries(): ''' Computes information about all countries of a CKAN instance. ''' key = 'countries' status = getStatus(key) queue = Queue(connection=Redis(host=REDIS_HOST), name=key) countries = ckan.action.group_list() if status['empty']: for country in countries: job = queue.enqueue(fetchAndStore, key, country) response = { 'success': True, 'message': 'Computing countries information. {n} before finished.'.format( n=status['count']), 'endpoint': key, 'time': None, 'ETA': None, 'computations': { 'total': len(countries), 'completed': len(countries) - status['count'], 'queued': status['count'], 'progress': round(((len(countries) - status['count']) / len(countries)) * 100, 2) } } return flask.jsonify(**response)
def computeResources(): ''' Computes information about all resources from a CKAN instance. ''' # # TODO: there aren't resource_list # method to list all resources from a # a CKAN instance. # # This route should not be registered # right now. # key = 'resources' status = getStatus(key) queue = Queue(connection=Redis(host=REDIS_HOST), name=key) objects = ckan.action.package_list() if status['empty']: for object in objects: job = queue.enqueue(fetchAndStore, key, object) response = { 'success': True, 'message': 'Computing resource information. {n} before finished.'.format(n=status['count']), 'endpoint': key, 'time': None, 'ETA': None, 'computations': { 'total': len(objects), 'completed': len(objects) - status['count'], 'queued': status['count'], 'progress': round(((len(objects) - status['count']) / len(objects)) * 100, 2) } } return flask.jsonify(**response)