def register_modules(self): help = import_module('ika.services.help') helpc = help.Help(self) names = list(helpc.aliases) names.insert(0, helpc.name) for name in names: self.commands[name] = helpc service = self.__module__.lstrip('ika.services') for modulename in settings.services[service]: try: module = import_module('ika.services.{}.{}'.format(service, modulename)) except ImportError: logger.exception('Missing module!') else: _, cls = inspect.getmembers(module, lambda member: inspect.isclass(member) and member.__module__ == 'ika.services.{}.{}'.format(service, modulename))[0] instance = cls(self) if isinstance(instance, Command): names = list(instance.aliases) names.insert(0, instance.name) for name in names: self.commands[name.upper()] = instance elif isinstance(instance, Listener): for event in self.server.ev.events: if hasattr(instance, event): hook = getattr(self.server.ev, event) hook += getattr(instance, event)
def main(): if len(sys.argv) == 1: print("Usage: ./run.py run") return if sys.argv[1] in ('makemigrations', 'runserver',): execute_from_command_line(sys.argv) elif sys.argv[1] == 'run': from django.db.migrations.executor import MigrationExecutor connection = connections[DEFAULT_DB_ALIAS] connection.prepare_database() executor = MigrationExecutor(connection) plan = executor.migration_plan(executor.loader.graph.leaf_nodes()) if len(plan) > 0: print('Synchronizing database schemas...') call_command('migrate') print() print('Starting application...') loop = asyncio.get_event_loop() ika = Server() ika.register_services() try: loop.run_until_complete(ika.connect()) except KeyboardInterrupt: ika.disconnect('Manually interrupted by console access') except: ika.disconnect('Exception has occured in the main loop') logger.exception('Exception has occured in the main loop') finally: loop.close()
def import_class_from_module(name): try: _module = reload_module(import_module(name)) except ImportError: from ika.logger import logger logger.exception(f'Missing module!: {name}') else: _, cls = inspect.getmembers(_module, lambda member: inspect.isclass(member) and member.__module__ == name)[0] return cls
def register_services(self): for modulename in settings.services: try: module = import_module('ika.services.{}'.format(modulename)) except ImportError: logger.exception('Missing module!') else: _, cls = inspect.getmembers(module, lambda member: inspect.isclass(member) and member.__module__ == 'ika.services.{}'.format(modulename))[0] instance = cls(self) self.services_instances.append(instance)
def main(): loop = asyncio.get_event_loop() ika = Server() ika.register_services() Base.metadata.create_all(engine) try: loop.run_until_complete(ika.connect()) except KeyboardInterrupt: ika.disconnect('Manually interrupted by console access') except: logger.exception('Exception has occured in the main loop') finally: loop.close()