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'))
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)
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)
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"], )