Files
monolith/monolith.py

59 lines
1.2 KiB
Python

import asyncio
from os import getenv
from time import sleep
import uvloop
import db
import util
from sources.ch4 import Chan4
from sources.dis import DiscordClient
from sources.ingest import Ingest
# Use UVLoop
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
log = util.get_logger("monolith")
modules_enabled = getenv("MODULES_ENABLED", False)
token = getenv("DISCORD_TOKEN", None)
if not token:
raise Exception("No Discord token provided")
async def main(loop):
if "ingest" in modules_enabled:
ingest = Ingest()
loop.create_task(ingest.run())
if "dis" in modules_enabled:
client = DiscordClient()
loop.create_task(client.start(token))
if "ch4" in modules_enabled:
chan = Chan4()
loop.create_task(chan.run())
created = False
while not created:
try:
db.create_index(db.api_client)
created = True
except Exception as e:
print(f"Error creating index: {e}")
sleep(1) # Block the thread, just wait for the DB
db.update_schema()
loop = asyncio.get_event_loop()
loop.create_task(main(loop))
try:
loop.run_forever()
except KeyboardInterrupt:
log.info("Process terminating")
finally:
loop.close()