File size: 438 Bytes
5830944
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import time

class AgencyThrottle:
    def __init__(self, min_interval=1.0):
        self.min_interval = min_interval
        self.last_call = 0
        self.healthy = True

    async def wait(self):
        delta = time.time() - self.last_call
        if delta < self.min_interval:
            await asyncio.sleep(self.min_interval - delta)
        self.last_call = time.time()

    def mark_unhealthy(self):
        self.healthy = False