AioHttp Integration
Using the standard client
option 1: using environment variables
First run: export APP_NAME=foo
, export LABEL=main
import logging
from config.ext import AioHttpConfig
from aiohttp import web
logging.basicConfig(level=logging.DEBUG)
app = web.Application()
routes = web.RouteTableDef()
@routes.get('/')
def home(request):
body="""
<html>
<body>
<p>config-client | aiohttp integration</p>
<p>sample endpoints</p>
<ul>
<li><a href="http://localhost:8080/config">/config</a></li>
<li><a href="http://localhost:8080/info">/info</a></li>
</ul>
</body>
</html>
"""
return web.Response(text=body, content_type='text/html')
@routes.get('/info')
def consul(request):
return web.json_response(dict(
description=app['config'].get('info.description'),
url=app['config']['info']['url']
))
@routes.get('/config')
def config(request):
return web.json_response(
dict(config=app['config'])
)
AioHttpConfig(app)
app.add_routes(routes)
web.run_app(app)
option 2: using custom client
import logging
from config import ConfigClient
from config.ext import AioHttpConfig
from aiohttp import web
logging.basicConfig(level=logging.DEBUG)
app = web.Application()
routes = web.RouteTableDef()
@routes.get('/')
def home(request):
body="""
<html>
<body>
<p>config-client | aiohttp integration</p>
<p>sample endpoints</p>
<ul>
<li><a href="http://localhost:8080/config">/config</a></li>
<li><a href="http://localhost:8080/info">/info</a></li>
</ul>
</body>
</html>
"""
return web.Response(text=body, content_type='text/html')
@routes.get('/info')
def consul(request):
return web.json_response(dict(
description=app['cloud_config'].get('info.description'),
url=app['cloud_config']['info']['url']
))
@routes.get('/config')
def config(request):
return web.json_response(
dict(config=app['cloud_config'])
)
AioHttpConfig(
app,
key='cloud_config',
client=ConfigClient(app_name='foo', label='main')
)
app.add_routes(routes)
web.run_app(app)
option 3: using custom settings
import logging
from config import ConfigClient
from config.ext import AioHttpConfig
from aiohttp import web
logging.basicConfig(level=logging.DEBUG)
app = web.Application()
routes = web.RouteTableDef()
@routes.get('/')
def home(request):
body="""
<html>
<body>
<p>config-client | aiohttp integration</p>
<p>sample endpoints</p>
<ul>
<li><a href="http://localhost:8080/config">/config</a></li>
<li><a href="http://localhost:8080/info">/info</a></li>
</ul>
</body>
</html>
"""
return web.Response(text=body, content_type='text/html')
@routes.get('/info')
def consul(request):
return web.json_response(dict(
description=app['cloud_config'].get('info.description'),
url=app['cloud_config']['info']['url']
))
@routes.get('/config')
def config(request):
return web.json_response(
dict(config=app['cloud_config'])
)
AioHttpConfig(
app,
key='cloud_config',
client=ConfigClient(app_name='foo', label='main'),
verify='/etc/ssl/certs/ca-certificates.crt'
)
app.add_routes(routes)
web.run_app(app)
Using the CloudFoundry client
Set APP_NAME
environment variable, for example.
For details, see: https://config-client.amenezes.net/docs/1.-overview/#setup
option 1: using environment variables
import logging
from config import CF
from config.ext import AioHttpConfig
from aiohttp import web
logging.basicConfig(level=logging.DEBUG)
app = web.Application()
routes = web.RouteTableDef()
@routes.get('/')
def home(request):
return web.Response(text="Hello, world")
@routes.get('/consul')
def consul(request):
return web.json_response(dict(
consul_port=app['config'].get('spring.cloud.consul.port'),
consul_host=app['config']['spring']['cloud']['consul']['host']
))
@routes.get('/config')
def config(request):
return web.json_response(
dict(config=app['config'])
)
AioHttpConfig(app, client=CF())
app.add_routes(routes)
web.run_app(app)
option 2: using custom client
import logging
from config import CF, ConfiClient
from config.ext import AioHttpConfig
from aiohttp import web
logging.basicConfig(level=logging.DEBUG)
app = web.Application()
routes = web.RouteTableDef()
@routes.get('/')
def home(request):
return web.Response(text="Hello, world")
@routes.get('/consul')
def consul(request):
return web.json_response(dict(
consul_port=app['config'].get('spring.cloud.consul.port'),
consul_host=app['config']['spring']['cloud']['consul']['host']
))
@routes.get('/config')
def config(request):
return web.json_response(
dict(config=app['config'])
)
AioHttpConfig(app, client=CF(client=ConfigClient(app_name='simpleweb000')))
app.add_routes(routes)
web.run_app(app)
option 3: using custom settings
import logging
from config import CF, ConfiClient
from config.ext import AioHttpConfig
from aiohttp import web
logging.basicConfig(level=logging.DEBUG)
app = web.Application()
routes = web.RouteTableDef()
@routes.get('/')
def home(request):
return web.Response(text="Hello, world")
@routes.get('/consul')
def consul(request):
return web.json_response(dict(
consul_port=app['config'].get('spring.cloud.consul.port'),
consul_host=app['config']['spring']['cloud']['consul']['host']
))
@routes.get('/config')
def config(request):
return web.json_response(
dict(config=app['config'])
)
AioHttpConfig(
app,
client=CF(client=ConfigClient(app_name='simpleweb000')),
verify='/etc/ssl/certs/ca-certificates.crt'
)
app.add_routes(routes)
web.run_app(app)