dev@locazia: add indexator, uploader

This commit is contained in:
user 2024-02-29 23:17:17 +03:00
parent 7eb012bdcc
commit 308099f8de
5 changed files with 118 additions and 10 deletions

View File

@ -1,6 +1,8 @@
import sys
import traceback
from asyncio import sleep
from datetime import datetime
import asyncio, sys
from aiogram import Bot
@ -58,6 +60,13 @@ async def execute_queue(app):
if __name__ == '__main__':
startup_target = '__main__'
try:
startup_target = sys.argv[3]
except IndexError:
pass
if startup_target == '__main__':
app.ctx.memory = Memory()
app.ctx.memory._telegram_bot = Bot(TELEGRAM_API_KEY)
dp._s_memory = app.ctx.memory
@ -68,3 +77,21 @@ if __name__ == '__main__':
app.add_task(dp.start_polling(app.ctx.memory._telegram_bot))
app.run(host='0.0.0.0', port=SANIC_PORT)
else:
loop = asyncio.get_event_loop()
startup_fn = None
if startup_target == 'indexator':
from app.core.background.indexator_service import main as target_fn
elif startup_target == 'uploader':
from app.core.background.uploader_service import main as target_fn
startup_fn = startup_fn or target_fn
assert startup_fn
try:
loop.run_until_complete(startup_fn())
except BaseException as e:
make_log(startup_target[0].upper() + startup_target[1:], f"Error: {e}" + '\n' + str(traceback.format_exc()), level='error')
sys.exit(1)
finally:
loop.close()

View File

@ -1,5 +1,6 @@
from app.core.models._blockchain.ton.connect import TonConnect, unpack_wallet_info
from sanic import response
from datetime import datetime, timedelta
def valid_royalty_params(royalty_params):
@ -15,6 +16,7 @@ def valid_royalty_params(royalty_params):
async def s_api_v1_blockchain_send_new_content_message(request):
assert request.json, "No data provided"
assert request.ctx.user, "No authorized user provided"
for field_key, field_value in {
'title': lambda x: isinstance(x, str),
@ -30,7 +32,20 @@ async def s_api_v1_blockchain_send_new_content_message(request):
assert field_key in request.json, f"No {field_key} provided"
assert field_value(request.json[field_key]), f"Invalid {field_key} provided"
assert request.json.get("title"), "No title provided"
ton_connect, ton_connection = TonConnect.by_user(request.ctx.db_session, request.ctx.user, callback_fn=())
await ton_connect.restore_connection()
assert ton_connect.connected, "No connected wallet"
# await ton_connect._sdk_client.send_transaction({
# 'valid_until': int(datetime.now().timestamp()),
# 'messages': [
# {
# 'address':
# }
# ]
# })
return response.json({"message": "Transaction requested"})

View File

@ -0,0 +1,17 @@
from app.core.logger import make_log
import asyncio
async def main():
make_log("Indexator", "Service started", level="info")
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()

View File

@ -0,0 +1,17 @@
from app.core.logger import make_log
import asyncio
async def main():
make_log("Uploader", "Service started", level="info")
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()

View File

@ -31,3 +31,35 @@ services:
depends_on:
maria_db:
condition: service_healthy
indexator:
build:
context: .
dockerfile: Dockerfile
command: python -m app indexator
env_file:
- .env
links:
- maria_db
volumes:
- ./logs:/app/logs
- ./storedContent:/app/data
depends_on:
maria_db:
condition: service_healthy
uploader:
build:
context: .
dockerfile: Dockerfile
command: python -m app uploader
env_file:
- .env
links:
- maria_db
volumes:
- ./logs:/app/logs
- ./storedContent:/app/data
depends_on:
maria_db:
condition: service_healthy