<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def get_counter(self, redis_conn=None, host='localhost', port=6379,
                    key='counter', cycle_time=5, start_time=None,
                    window=SECONDS_1_HOUR, roll=True, keep_max=12, start_at=0):
        '''
        Generate a new Counter
        Useful for generic distributed counters

        @param redis_conn: A premade redis connection (overrides host and port)
        @param host: the redis host
        @param port: the redis port
        @param key: the key for your stats collection
        @param cycle_time: how often to check for expiring counts
        @param start_time: the time to start valid collection
        @param window: how long to collect data for in seconds (if rolling)
        @param roll: Roll the window after it expires, to continue collecting
            on a new date based key.
        @keep_max: If rolling the static window, the max number of prior
            windows to keep
        @param start_at: The integer to start counting at
        '''
        counter = Counter(key=key, cycle_time=cycle_time,
                          start_time=start_time, window=window, roll=roll,
                          keep_max=keep_max)
        counter.setup(redis_conn=redis_conn, host=host, port=port)
        return counter