Example #1
0
 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)
Example #2
0
File: run.py Project: devunt/ika
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()
Example #3
0
File: utils.py Project: devunt/ika
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
Example #4
0
 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)
Example #5
0
File: run.py Project: hikipro/ika
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()