def handle(self, *args, **kwargs):
        server = SessionStore().server
        now = datetime.datetime.now()
        self.sessions = Session.objects.filter(
            expire_date__gte=now,
        ).values_list(
            'session_key',
            'session_data',
            'expire_date',
        )
        self.start_progressbar()

        pipe = server.pipeline(transaction=False)
        for i, session in enumerate(self.sessions.iterator()):
            session_key, session_data, expire_date = session
            if i % CHUNK_SIZE == 0:
                gc.collect()

            if expire_date < now:
                # this session is old, let's ignore it
                continue

            # convert the expire date to a ttl in seconds
            delta = expire_date - now
            ttl = (delta.days * 24 * 60 * 60) + delta.seconds

            # set the key, value and ttl
            pipe.set(session_key, session_data)
            pipe.expire(session_key, ttl)
            self.update_progressbar(i)

        # execute all commands in 1 big pipeline
        pipe.execute()

        self.end_progressbar()