async def start(self, ctx: Context):
     for resource_name, context_attr, client_args in self.clients:
         client = AsyncIOMotorClient(**client_args)
         ctx.finished.connect(
             partial(self.shutdown_client, client=client, resource_name=resource_name))
         ctx.publish_resource(client, resource_name, context_attr, types=[AsyncIOMotorClient])
         logger.info('Configured MongoDB client (%s / ctx.%s; host=%r)', resource_name,
                     context_attr, client_args.get('host', 'localhost'))
예제 #2
0
    async def start(self, ctx: Context):
        # Autobahn uses txaio to bridge the API gap between asyncio and Twisted so we need to set
        # it up for asyncio here
        txaio.use_asyncio()
        txaio.config.loop = get_event_loop()

        for resource_name, context_attr, client in self.clients:
            await client.start(ctx)
            ctx.publish_resource(client, resource_name, context_attr)
            logger.info(
                'Configured WAMP client (%s / ctx.%s; host=%s; port=%d; realm=%s)',
                resource_name, context_attr, client.host, client.port,
                client.realm)
예제 #3
0
    async def start(self, ctx: Context):
        for (resource_name, context_attr, launch_jvm, gateway_params, callback_server_params,
             classpath, javaopts) in self.gateways:
            if launch_jvm:
                gateway_params.port = launch_gateway(classpath=classpath, javaopts=javaopts)

            gateway = JavaGateway(gateway_parameters=gateway_params,
                                  callback_server_parameters=callback_server_params)
            ctx.finished.connect(partial(self.shutdown_gateway, gateway=gateway,
                                         resource_name=resource_name, shutdown_jvm=launch_jvm))
            ctx.publish_resource(gateway, resource_name, context_attr)
            logger.info('Configured Py4J gateway (%s / ctx.%s; address=%s, port=%d)',
                        resource_name, context_attr, gateway_params.address, gateway_params.port)
    async def start(self, ctx: Context):
        for resource_name, context_attr, bind in self.connectables:
            ctx.publish_resource(bind, resource_name, context_attr, types=Engine)
            logger.info('Configured SQLAlchemy engine (%s / ctx.%s; dialect=%s)', resource_name,
                        context_attr, bind.dialect.name)

        if self.sessionmaker:
            if isinstance(self.commit_executor, str):
                self.commit_executor = await ctx.request_resource(Executor, self.commit_executor)

            ctx.publish_resource(self.sessionmaker)
            ctx.publish_lazy_resource(self.create_session, Session,
                                      context_attr=self.session_context_attr)
            logger.info('Configured SQLAlchemy session (default / ctx.%s)',
                        self.session_context_attr)
예제 #5
0
    async def start(self, ctx: Context):
        for resource_name, context_attr, config in self.clients:
            # Resolve resource references
            if isinstance(config["ssl"], str):
                config["ssl"] = await ctx.request_resource(SSLContext, config["ssl"])

            redis = await create_reconnecting_redis(**config)
            ctx.finished.connect(partial(self.shutdown_client, redis=redis, resource_name=resource_name))
            ctx.publish_resource(redis, resource_name, context_attr)
            logger.info(
                "Configured Redis client (%s / ctx.%s; address=%s, db=%d)",
                resource_name,
                context_attr,
                config["address"],
                config["db"],
            )