precommit-setup

This commit is contained in:
2024-01-25 12:25:52 +03:00
parent 8435c8e6b5
commit 152d5a4e99
14 changed files with 320 additions and 309 deletions

View File

@@ -1,71 +1,67 @@
from typing import List
import asyncio
import logging
from datetime import datetime, timedelta, timezone
from typing import List
import requests
from datetime import datetime, timezone, timedelta
from models.member import ChatMember
from settings import API_BASE
import time
import logging
logger = logging.getLogger("[services.core] ")
logger = logging.getLogger('[services.core] ')
logger.setLevel(logging.DEBUG)
def _request_endpoint(query_name, body) -> dict:
ts1 = time.time()
logger.debug(f"requesting {query_name}...")
response = requests.post(API_BASE, headers={"Content-Type": "application/json"}, json=body)
ts2 = time.time()
logger.debug(f"{query_name} response in {ts1-ts2} secs: <{response.status_code}> {response.text[:32]}..")
logger.debug(f'requesting {query_name}...')
response = requests.post(API_BASE, headers={'Content-Type': 'application/json'}, json=body, timeout=30.0)
if response.status_code == 200:
try:
r = response.json()
result = r.get("data", {}).get(query_name, {})
result = r.get('data', {}).get(query_name, {})
if result:
logger.info(f"entries amount in result: {len(result)} ")
logger.info(f'entries amount in result: {len(result)} ')
return result
except ValueError as e:
logger.error(f"Error decoding JSON response: {e}")
logger.error(f'Error decoding JSON response: {e}')
return {}
def get_all_authors():
query_name = "get_authors_all"
query_name = 'get_authors_all'
gql = {
"query": "query { " + query_name + "{ id slug pic name user } }",
"variables": None,
'query': 'query { ' + query_name + '{ id slug pic name user } }',
'variables': None,
}
return _request_endpoint(query_name, gql)
def get_author_by_user(user: str):
operation = "GetAuthorId"
query_name = "get_author_id"
operation = 'GetAuthorId'
query_name = 'get_author_id'
gql = {
"query": f"query {operation}($user: String!) {{ {query_name}(user: $user){{ id }} }}",
"operationName": operation,
"variables": {"user": user.strip()},
'query': f'query {operation}($user: String!) {{ {query_name}(user: $user){{ id }} }}', # noqa E201, E202
'operationName': operation,
'variables': {'user': user.strip()},
}
return _request_endpoint(query_name, gql)
def get_my_followed() -> List[ChatMember]:
query_name = "get_my_followed"
query_name = 'get_my_followed'
gql = {
"query": "query { " + query_name + " { authors { id slug pic name } } }",
"variables": None,
'query': 'query { ' + query_name + ' { authors { id slug pic name } } }',
'variables': None,
}
result = _request_endpoint(query_name, gql)
return result.get("authors", [])
return result.get('authors', [])
class CacheStorage:
@@ -89,12 +85,12 @@ class CacheStorage:
self = CacheStorage
async with self.lock:
result = get_all_authors()
logger.info(f"cache loaded {len(result)}")
logger.info(f'cache loaded {len(result)}')
if result:
CacheStorage.authors = result
for a in result:
user_id = a.get("user")
author_id = str(a.get("id"))
user_id = a.get('user')
author_id = str(a.get('id'))
self.authors_by_user[user_id] = a
self.authors_by_id[author_id] = a
@@ -105,22 +101,23 @@ class CacheStorage:
self = CacheStorage
while True:
try:
logger.info(" - updating profiles data...")
logger.info(' - updating profiles data...')
await self.update_authors()
failed = 0
except Exception as er:
failed += 1
logger.error(f"{er} - update failed #{failed}, wait 10 seconds")
logger.error(f'{er} - update failed #{failed}, wait 10 seconds')
if failed > 3:
logger.error(" - not trying to update anymore")
logger.error(' - not trying to update anymore')
import traceback
traceback.print_exc()
break
if failed == 0:
when = datetime.now(timezone.utc) + timedelta(seconds=self.period)
t = format(when.astimezone().isoformat())
logger.info(" ⎩ next update: %s" % (t.split("T")[0] + " " + t.split("T")[1].split(".")[0]))
logger.info(' ⎩ next update: %s' % (t.split('T')[0] + ' ' + t.split('T')[1].split('.')[0]))
await asyncio.sleep(self.period)
else:
await asyncio.sleep(10)
logger.info(" - trying to update data again")
logger.info(' - trying to update data again')