Exemple #1
0
def refresher(obj, *args, **kwargs):
    """Refresh model object cache."""
    logger.info('Starting async refresh for model {name} : {uid}'.format(
        **kwargs
    ))
    obj.to_dict()
    obj.to_listing_dict()
    obj.to_summary_dict()
    logger.info('Finishing async refresh for model {name} : {uid}'.format(
        **kwargs
    ))
Exemple #2
0
 def _create_region(self):
     """Create a new region instance."""
     backend = self._backend
     config = self._config = BACKENDS_CONFIG.get(backend)
     config['wrap'] = [LoggingProxy]
     region = make_region(
         function_key_generator=self.key_generator
     ).configure(
         backend,
         **config
     )
     logger.info(f'New dogpile.cache region created. {backend}')
     self._region = region
Exemple #3
0
 def put(self, uid: str, data: dict) -> dict:
     """Update remote item."""
     uri = f'{self.absolute_url}/{uid}'
     name = self.name
     logger.info(f'Updating item in {name}: {uri}')
     kwargs = self._requests_kwargs(data)
     response = requests.put(uri, **kwargs)
     if response.status_code == 200:
         return response.json()
     else:
         response = response.text
         error_msg = f'Fail to update item in {name}: {uri}. Response: {response}'
         logger.exception(error_msg)
         raise RuntimeError(error_msg)
Exemple #4
0
 def get(self, uid: str) -> dict:
     """Get remote item."""
     uri = f'{self.absolute_url}/{uid}'
     name = self.name
     logger.info(f'Get item from {name}: {uri}')
     kwargs = self._requests_kwargs()
     response = requests.get(uri, **kwargs)
     if response.status_code == 200:
         data = response.json()
         return data
     elif response.status_code == 404:
         return None
     else:
         response = response.text
         error_msg = f'Fail to get item from {name}: {uri}. Response: {response}'
         logger.exception(error_msg)
         raise RuntimeError(error_msg)
Exemple #5
0
    def query(self, payload: dict=None, items_per_page=25) -> dict:
        """Get items using key:value payload as filter and number of results per page."""
        uri = f'{self.absolute_url}'
        name = self.name
        logger.info(f'Listing items from {name}: {uri}')
        kwargs = self._requests_kwargs()
        if not payload:
            payload = {}

        payload['_items_per_page'] = items_per_page
        kwargs['params'] = payload
        response = requests.get(uri, **kwargs)
        if response.status_code == 200:
            data = response.json()
            return data
        else:
            response = response.text
            error_msg = f'Fail list items from {name}: {uri}. Response: {response}'
            logger.exception(error_msg)
            raise RuntimeError(error_msg)
Exemple #6
0
def get_metadata_from_thumbor(source_path: str) -> dict:
    """Connect to briefy.thumbor to get metadata about an image.

    :param source_path: Relative path to the source image on S3.
    :return: Dictionary containing metadata information
    """
    timeout = 20  # will timeout after 20 seconds
    metadata = {'width': 0, 'height': 0, 'raw_metadata': {}}
    url = generate_metadata_url(source_path)
    try:
        response = requests.get(url, timeout=timeout)
    except (requests.exceptions.Timeout, requests.exceptions.ConnectionError):
        logger.info(f'Connection issues updating metadata from {url}')
        return metadata

    if response.status_code == 200:
        data = response.json()
        original = data.get('original', {})
        metadata['width'] = original.get('width', 0)
        metadata['height'] = original.get('height', 0)
        metadata['raw_metadata'] = original.get('metadata', {})
    return metadata