def drain_metric(self):
    if not self:
      return (None, [])
    if self.strategy:
      metric = self.strategy.choose_item()
    else:
      # Avoid .keys() as it dumps the whole list
      metric = self.iterkeys().next()
    return (metric, self.pop(metric))
Returns a metric and it's datapoints in order determined by the
dataset/ETHPy150Open graphite-project/carbon/lib/carbon/cache.py/_MetricCache.drain_metric