async def before_serving() -> None: """Called before the server begins serving connections.""" # retrieve a client session to use for http connections. glob.http = aiohttp.ClientSession(json_serialize=orjson.dumps) # retrieve a pool of connections to use for mysql interaction. glob.db = cmyui.AsyncSQLPool() await glob.db.connect(glob.config.mysql) # run the sql & submodule updater (uses http & db). updater = Updater(glob.version) await updater.run() await updater.log_startup() # cache many global collections/objects from sql, # such as channels, mappools, clans, bot, etc. await setup_collections() # setup tasks for upcoming donor expiry dates. await bg_loops.donor_expiry() # setup a loop to kick inactive ghosted players. loop = asyncio.get_running_loop() loop.create_task(bg_loops.disconnect_ghosts()) # if the surveillance webhook has a value, run # automatic (still very primitive) detections on # replays deemed by the server's configurable values. if glob.config.webhooks['surveillance']: loop.create_task(bg_loops.replay_detections()) # reroll the bot's random status every `interval` sec. loop.create_task(bg_loops.reroll_bot_status(interval=300))
async def before_serving() -> None: """Called before the server begins serving connections.""" glob.loop = asyncio.get_event_loop() if glob.has_internet: # retrieve a client session to use for http connections. glob.http = aiohttp.ClientSession( json_serialize=orjson.dumps) # type: ignore else: glob.http = None # retrieve a pool of connections to use for mysql interaction. glob.db = cmyui.AsyncSQLPool() await glob.db.connect(glob.config.mysql) # run the sql & submodule updater (uses http & db). # TODO: updating cmyui_pkg should run before it's import updater = Updater(glob.version) await updater.run() await updater.log_startup() # open a connection to our local geoloc database, # if the database file is present. if GEOLOC_DB_FILE.exists(): glob.geoloc_db = geoip2.database.Reader(GEOLOC_DB_FILE) else: glob.geoloc_db = None # cache many global collections/objects from sql, # such as channels, mappools, clans, bot, etc. async with glob.db.pool.acquire() as conn: async with conn.cursor(aiomysql.DictCursor) as db_cursor: await setup_collections(db_cursor) new_coros = [] # create a task for each donor expiring in 30d. new_coros.extend(await bg_loops.donor_expiry()) # setup a loop to kick inactive ghosted players. new_coros.append(bg_loops.disconnect_ghosts()) ''' # if the surveillance webhook has a value, run # automatic (still very primitive) detections on # replays deemed by the server's configurable values. if glob.config.webhooks['surveillance']: new_coros.append(bg_loops.replay_detections()) ''' # reroll the bot's random status every `interval` sec. new_coros.append(bg_loops.reroll_bot_status(interval=300)) for coro in new_coros: glob.app.add_pending_task(coro)