Randomness in interval and increasing waiting time to prevent API ban
This commit is contained in:
parent
a2eff32362
commit
24df340049
39
main.py
39
main.py
|
@ -1,4 +1,5 @@
|
||||||
from tgtg import TgtgClient
|
from tgtg import TgtgClient
|
||||||
|
from tgtg.exceptions import TgtgAPIError
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
import telegram
|
import telegram
|
||||||
|
@ -6,7 +7,16 @@ import asyncio
|
||||||
import time
|
import time
|
||||||
import datetime
|
import datetime
|
||||||
import requests
|
import requests
|
||||||
|
import random
|
||||||
|
|
||||||
|
initial_waiting_time = 60
|
||||||
|
waiting_time = initial_waiting_time
|
||||||
|
waiting_time_limit = 60 * 60 * 24
|
||||||
|
waiting_time_increase = 2
|
||||||
|
|
||||||
|
randomness = 0.1
|
||||||
|
|
||||||
|
interval = 60
|
||||||
|
|
||||||
client = None
|
client = None
|
||||||
telegram_bot = None
|
telegram_bot = None
|
||||||
|
@ -16,6 +26,21 @@ if removal_notification is None:
|
||||||
removal_notification = False
|
removal_notification = False
|
||||||
|
|
||||||
|
|
||||||
|
def parse_duration(seconds):
|
||||||
|
seconds = int(seconds)
|
||||||
|
minutes = seconds // 60
|
||||||
|
seconds = seconds % 60
|
||||||
|
hours = minutes // 60
|
||||||
|
minutes = minutes % 60
|
||||||
|
|
||||||
|
if hours > 0:
|
||||||
|
return f'{hours}h {minutes}m {seconds}s'
|
||||||
|
elif minutes > 0:
|
||||||
|
return f'{minutes}m {seconds}s'
|
||||||
|
else:
|
||||||
|
return f'{seconds}s'
|
||||||
|
|
||||||
|
|
||||||
def check_env():
|
def check_env():
|
||||||
if os.environ.get('TGTG_EMAIL') is None:
|
if os.environ.get('TGTG_EMAIL') is None:
|
||||||
return False
|
return False
|
||||||
|
@ -74,6 +99,7 @@ async def main():
|
||||||
last = []
|
last = []
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
try:
|
||||||
items = client.get_items()
|
items = client.get_items()
|
||||||
|
|
||||||
texts = []
|
texts = []
|
||||||
|
@ -120,7 +146,18 @@ async def main():
|
||||||
print('-', end='', flush=True)
|
print('-', end='', flush=True)
|
||||||
|
|
||||||
last = next
|
last = next
|
||||||
time.sleep(60)
|
time.sleep(interval + randomness * interval * (2 * random.random() - 1))
|
||||||
|
|
||||||
|
waiting_time = initial_waiting_time
|
||||||
|
|
||||||
|
except TgtgAPIError as e:
|
||||||
|
print(e)
|
||||||
|
real_waiting_time = round(waiting_time + randomness * waiting_time * (2 * random.random() - 1))
|
||||||
|
await send_message([f'tg² failed to fetch data, retrying in {parse_duration(real_waiting_time)}'])
|
||||||
|
time.sleep(real_waiting_time)
|
||||||
|
|
||||||
|
if waiting_time < waiting_time_limit:
|
||||||
|
waiting_time *= waiting_time_increase
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print('Check environ:', check_env())
|
print('Check environ:', check_env())
|
||||||
|
|
Loading…
Reference in New Issue