code: def _get_cache_key(self, **kwargs):
          
          m = md5()
          for significant_kwarg in self.significant_kwargs:
              key, to_str = significant_kwarg
              try:
                  m.update(to_str(kwargs[key]))
              except (TypeError, UnicodeEncodeError):
                  # Python 3.x strings aren't accepted by hash.update().
                  # String should be byte-encoded first.
                  m.update(to_str(kwargs[key]).encode('utf-8'))
  
          if hasattr(self, 'cache_prefix'):
              cache_prefix = self.cache_prefix
          else:
              cache_prefix = '%s.%s' % (self.__module__, self.__name__)
          return '%s:%s' % (cache_prefix, m.hexdigest())
docs: Take this task's configured ``significant_kwargs`` and build a hash
          that all equivalent task calls will match.
  
          Takes in kwargs and returns a string.
  
          To change the way the cache key is generated or do more in-depth
          processing, override this method.