In [1]:
import itertools
import time

import pipecat.device.clock
import pipecat.limit
import pipecat.utility

import logging
logging.basicConfig(level=logging.DEBUG)

In [2]:
def broken_metronome():
    for i in itertools.count():
        yield {}
        time.sleep(i)

In [3]:
pipe = broken_metronome()
pipe = pipecat.utility.trace(pipe)
pipe = pipecat.limit.timeout(pipe, pipecat.quantity(3, pipecat.units.seconds))
pipe = pipecat.utility.trace(pipe)

for record in pipe:
    pass


DEBUG:pipecat:timeout started
DEBUG:pipecat:broken_metronome started
DEBUG:pipecat:broken_metronome record: {}
DEBUG:pipecat:broken_metronome record: {}
DEBUG:pipecat:timeout record: {}
DEBUG:pipecat:timeout record: {}
DEBUG:pipecat:broken_metronome record: {}
DEBUG:pipecat:timeout record: {}
DEBUG:pipecat:broken_metronome record: {}
DEBUG:pipecat:timeout record: {}
DEBUG:pipecat:broken_metronome record: {}
DEBUG:pipecat:timeout record: {}
INFO:pipecat:trace iteration stopped by 3 second timeout.
DEBUG:pipecat:timeout finished
DEBUG:pipecat:broken_metronome record: {}
DEBUG:pipecat:broken_metronome finished

In [ ]: