示例#1
0
    def get_repo(self, force_refresh=False):
        """
        Using the configuration for this GitHubStatsRepository instance, fetch
        the repo object from cache, if possible, else, from GitHub.

        :param force_refresh: Set to force an update from GitHub.
        :type force_refresh: bool
        :rtype: GitHubStatsRepository
        """
        key = self.get_cache_key()
        g = Github(self.token)
        if force_refresh:
            repo = None
        else:
            pickled = cache.get(key, None)
            if pickled:
                file_str = StringIO.StringIO(pickled)
                repo = g.load(file_str)
            else:
                repo = None
        if repo is None:
            if force_refresh:
                logger.info('Forced refresh')
            else:
                logger.info('Natural refresh')
            repo = g.get_repo(self.full_name)
            output = StringIO.StringIO()
            g.dump(repo, output)
            duration = CACHE_DURATION * 2 if force_refresh else CACHE_DURATION
            cache.set(key, output.getvalue(), duration)
        return repo
示例#2
0
    def get_repo(self, force_refresh=False):
        """
        Using the configuration for this GitHubStatsRepository instance, fetch
        the repo object from cache, if possible, else, from GitHub.

        :param force_refresh: Set to force an update from GitHub.
        :type force_refresh: bool
        :rtype: GitHubStatsRepository
        """
        key = self.get_cache_key()
        g = Github(self.token)
        if force_refresh:
            repo = None
        else:
            pickled = cache.get(key, None)
            if pickled:
                file_str = StringIO.StringIO(pickled)
                repo = g.load(file_str)
            else:
                repo = None
        if repo is None:
            if force_refresh:
                logger.info('Forced refresh')
            else:
                logger.info('Natural refresh')
            repo = g.get_repo(self.full_name)
            output = StringIO.StringIO()
            g.dump(repo, output)
            duration = CACHE_DURATION * 2 if force_refresh else CACHE_DURATION
            cache.set(key, output.getvalue(), duration)
        return repo