dev@locazia: fix metadata create error

This commit is contained in:
user 2024-03-08 23:14:45 +03:00
parent 962e8dce16
commit 3da514ac15
1 changed files with 26 additions and 19 deletions

View File

@ -1,7 +1,9 @@
import json import json
import asyncio
from hashlib import sha256 from hashlib import sha256
from base58 import b58encode from base58 import b58encode
from datetime import datetime, timedelta
from httpx import AsyncClient from httpx import AsyncClient
from app.core.logger import make_log from app.core.logger import make_log
@ -46,26 +48,31 @@ async def create_metadata_for_item(
metadata_hash = sha256(metadata_bin).digest() metadata_hash = sha256(metadata_bin).digest()
metadata_hash_b58 = b58encode(metadata_hash).decode() metadata_hash_b58 = b58encode(metadata_hash).decode()
metadata_content = None
init_ts = datetime.now()
async with AsyncClient() as client: async with AsyncClient() as client:
response = await client.post( while not metadata_content:
f"{PROJECT_HOST}/api/v1/storage", response = await client.post(
files={"file": ('metadata.json', metadata_bin, 'json')}, f"{PROJECT_HOST}/api/v1/storage",
headers={ files={"file": ('metadata.json', metadata_bin, 'json')},
'X-Service-Signature': signer.sign(metadata_hash), headers={
'X-Message-Hash': metadata_hash_b58, 'X-Service-Signature': signer.sign(metadata_hash),
} 'X-Message-Hash': metadata_hash_b58,
) }
try: )
assert response.status_code == 200 try:
except BaseException as e: assert response.status_code == 200
make_log("create_metadata_for_item", f"Res: {response.text}, Error: {e}", level='error') except BaseException as e:
raise e make_log("create_metadata_for_item", f"Res: {response.text}, Error: {e}", level='error')
raise e
response_json = response.json() response_json = response.json()
metadata_sha256 = response_json['content_sha256'] metadata_sha256 = response_json['content_sha256']
metadata_content = db_session.query(StoredContent).filter(StoredContent.hash == metadata_sha256).first() metadata_content = db_session.query(StoredContent).filter(StoredContent.hash == metadata_sha256).first()
if metadata_content:
return metadata_content
raise Exception("Metadata not created") await asyncio.sleep(.3)
if (datetime.now() - init_ts) > timedelta(seconds=10):
raise Exception("Metadata not created")
return metadata_content