def get_count(self, unique_identifier, metric, start_date=None, end_date=None, **kwargs):
        """
        Gets the count for the ``metric`` for ``unique_identifier``. You can specify a ``start_date``
        and an ``end_date``, to only get metrics within that time range.

        :param unique_identifier: Unique string indetifying the object this metric is for
        :param metric: A unique name for the metric you want to track
        :param start_date: Get the specified metrics after this date
        :param end_date: Get the sepcified metrics before this date
        :return: The count for the metric, 0 otherwise
        """
        result = None
        if start_date and end_date:
            start_date, end_date = (start_date, end_date,) if start_date < end_date else (end_date, start_date,)

            start_date = start_date if hasattr(start_date, 'date') else datetime.datetime.combine(start_date, datetime.time())
            end_date = end_date if hasattr(end_date, 'date') else datetime.datetime.combine(end_date, datetime.time())

            monthly_metrics_dates = list(rrule.rrule(rrule.MONTHLY, dtstart=start_date, bymonthday=1, until=end_date))

            #We can sorta optimize this by getting most of the data by month
            if len(monthly_metrics_dates) >= 3:

                with self._analytics_backend.map() as conn:
                        monthly_metric_series, monthly_metric_results, starting_metric_series, starting_metric_results, ending_metric_series, ending_metric_results = self._get_counts(
                            conn, metric, unique_identifier, monthly_metrics_dates, start_date, end_date)

                monthly_metric_series, monthly_metric_results = self._parse_and_process_metrics(monthly_metric_series, monthly_metric_results)
                starting_metric_series, starting_metric_results = self._parse_and_process_metrics(starting_metric_series, starting_metric_results)
                ending_metric_series, ending_metric_results = self._parse_and_process_metrics(ending_metric_series, ending_metric_results)

                result = sum(monthly_metric_results.values()) + sum(starting_metric_results.values()) + sum(ending_metric_results.values())
            else:
                diff = end_date - start_date
                metric_results = self.get_metric_by_day(unique_identifier, metric, start_date, limit=diff.days + 1)
                result = sum(metric_results[1].values())

        else:
            try:
                result = int(self._analytics_backend.get(self._prefix + ":" + "analy:%s:count:%s" % (unique_identifier, metric,)))
            except TypeError:
                result = 0

        return result
Gets the count for the ``metric`` for ``unique_identifier``. You can specify a ``start_date``
        and an ``end_date``, to only get metrics within that time range.

        :param unique_identifier: Unique string indetifying the object this metric is for
        :param metric: A unique name for the metric you want to track
        :param start_date: Get the specified metrics after this date
        :param end_date: Get the sepcified metrics before this date
        :return: The count for the metric, 0 otherwise