Source code for wcraas_control.config
import logging
from collections import namedtuple
from environs import Env
from wcraas_common import AMQPConfig
[docs]class RedisConfig(namedtuple("RedisConfig", ("host", "port"))):
__slots__ = ()
[docs] @classmethod
def fromenv(cls):
"""
Create a `wcraas_control.RedisConfig` from Environment Variables.
>>> conf = RedisConfig.fromenv()
>>> type(conf)
<class 'config.RedisConfig'>
>>> conf._fields
('host', 'port')
>>> conf.host
'localhost'
>>> conf.port
6379
"""
env = Env()
env.read_env()
with env.prefixed("REDIS_"):
return cls(host=env.str("HOST", "localhost"), port=env.int("PORT", 6379))
[docs]class Config(namedtuple("Config", ("amqp", "redis", "interval", "loglevel"))):
__slots__ = ()
[docs] @classmethod
def fromenv(cls):
"""
Create a `wcraas_control.Config` from Environment Variables.
>>> conf = Config.fromenv()
>>> type(conf)
<class 'config.Config'>
>>> conf._fields
('amqp', 'redis', 'interval', 'loglevel')
>>> conf.amqp
AMQPConfig(host='localhost', port=5672, user='guest', password='guest')
>>> conf.redis
RedisConfig(host='localhost', port=6379)
>>> conf.interval
10
>>> conf.loglevel
20
"""
env = Env()
env.read_env()
return cls(
amqp=AMQPConfig.fromenv(),
redis=RedisConfig.fromenv(),
interval=env.int("POLLING_INTERVAL", 10),
loglevel=getattr(logging, env.str("LOGLEVEL", "INFO")),
)