# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from datetime import timedelta

from django.conf import settings
from django.utils import timezone

try:
    from django.core.management.base import BaseCommand
except ImportError:
    from django.core.management.base import NoArgsCommand as BaseCommand

from hitcount.models import Hit


class Command(BaseCommand):
    help = "Can be run as a cronjob or directly to clean out old Hits objects from the database."

    def __init__(self, *args, **kwargs):
        super(Command, self).__init__(*args, **kwargs)

    def handle(self, *args, **kwargs):
        self.handle_noargs()

    def handle_noargs(self, **options):
        grace = getattr(settings, 'HITCOUNT_KEEP_HIT_IN_DATABASE', {'days': 30})
        period = timezone.now() - timedelta(**grace)
        qs = Hit.objects.filter(created__lt=period)
        number_removed = len(qs)
        qs.delete()
        self.stdout.write('Successfully removed %s Hits' % number_removed)

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from datetime import timedelta

from django.conf import settings
from django.utils import timezone

try:
    from django.core.management.base import BaseCommand
except ImportError:
    from django.core.management.base import NoArgsCommand as BaseCommand

from hitcount.models import Hit


class Command(BaseCommand):
    help = "Can be run as a cronjob or directly to clean out old Hits objects from the database."

    def __init__(self, *args, **kwargs):
        super(Command, self).__init__(*args, **kwargs)

    def handle(self, *args, **kwargs):
        self.handle_noargs()

    def handle_noargs(self, **options):
        grace = getattr(settings, 'HITCOUNT_KEEP_HIT_IN_DATABASE', {'days': 30})
        period = timezone.now() - timedelta(**grace)
        qs = Hit.objects.filter(created__lt=period)
        number_removed = qs.count()
        qs.delete()
        self.stdout.write('Successfully removed %s Hits' % number_removed)

Use count() on queryset instead of len()
Use count() on queryset instead of len()

Ensure a fast query even for millions of rows.
