fix limits
This commit is contained in:
parent
5149346772
commit
dfbc61e46f
|
|
@ -9,11 +9,15 @@ from app.core.logger import make_log
|
|||
|
||||
|
||||
class TonCenter:
|
||||
LIMIT_PER_SECOND = 5
|
||||
|
||||
def __init__(self, host: str, api_key: str = None, v3_host: str = None, testnet: bool = False):
|
||||
self.host = host
|
||||
self.api_key = api_key
|
||||
self.v3_host = v3_host
|
||||
self.last_used = time.time()
|
||||
|
||||
self.reset_timer = time.time()
|
||||
self.requests_count = 0
|
||||
|
||||
async def request(self, method: str, endpoint: str, *args, v3: bool=False, tries_count=0, **kwargs) -> dict:
|
||||
if tries_count > 3:
|
||||
|
|
@ -26,11 +30,15 @@ class TonCenter:
|
|||
kwargs['headers'] = kwargs.get('headers', {})
|
||||
kwargs['headers']['X-API-Key'] = self.api_key
|
||||
|
||||
if not self.api_key:
|
||||
while time.time() < self.last_used + 1.2:
|
||||
await asyncio.sleep(0.1)
|
||||
if self.requests_count >= self.LIMIT_PER_SECOND:
|
||||
while (time.time() - self.reset_timer) < 1.2:
|
||||
await asyncio.sleep(.1)
|
||||
|
||||
self.reset_timer = time.time()
|
||||
self.requests_count = 0
|
||||
|
||||
self.requests_count += 1
|
||||
|
||||
self.last_used = time.time()
|
||||
response = await client.request(method, f"{self.v3_host if v3 is True else self.host}{endpoint}", *args, **kwargs)
|
||||
try:
|
||||
if response.status_code != 200:
|
||||
|
|
|
|||
Loading…
Reference in New Issue