"""Configuration. Configuration and env. variables for analytics microservice. """ import logging import os import newrelic.agent SERVICE_NAME = 'ows-analytics' SERVICE_VERSION = '1.0.0' # Health check HEALTH_CHECK = '/hello/' # Session duration SESSION_DURATION = 60 # List of all our existing enviromments: # # - test: the test enviroment is used by py.test to perform small adjustments # to the code. For instance: create the tables etc. # # - dev: the dev enviroment is used for development purposes. It points to # a different set of databases. # # - prod: production enviromment. Points directly to all our production # servers. TEST_ENVIRONMENT = 'test' DEV_ENVIRONMENT = 'dev' PROD_ENVIRONMENT = 'prod' QA_ENVIRONMENT = 'qa' environment = os.environ.get('Environment', 'dev') # Database configuration DB_URL = os.environ.get('DB_URL', 'sqlite://') # Redis configuration REDIS_HOST = os.environ.get('REDIS_HOST') REDIS_PORT = os.environ.get('REDIS_PORT') # Sentry SENTRY = os.environ.get('SENTRY_DSN') or None # Logging LOGGER_LEVEL = logging.INFO LOGGER_NAME = 'ows1' LOGGER_DSN = os.environ.get('LOGGER_DSN') # StatsD configuration STATSD_PREFIX = os.environ.get('STATSD_PREFIX') STATSD_CLIENT = os.environ.get('STATSD_CLIENT') STATSD_PORT = os.environ.get('STATSD_PORT') # Spotify SPOTIFY_CLIENT_ID = os.environ.get('SPOTIFY_CLIENT_ID') SPOTIFY_SECRET_ID = os.environ.get('SPOTIFY_SECRET_ID') # Apple Music Kit APPLE_MUSIC_PRIVATE_KEY_PATH = os.environ.get('APPLE_MUSIC_PRIVATE_KEY_PATH') if (APPLE_MUSIC_PRIVATE_KEY_PATH and os.path.isfile(APPLE_MUSIC_PRIVATE_KEY_PATH)): with open(APPLE_MUSIC_PRIVATE_KEY_PATH, 'r') as key_file: APPLE_MUSIC_PRIVATE_KEY = key_file.read() else: APPLE_MUSIC_PRIVATE_KEY = '' APPLE_MUSIC_KEY_ID = os.environ.get('APPLE_MUSIC_KEY_ID') APPLE_MUSIC_TEAM_ID = os.environ.get('APPLE_MUSIC_TEAM_ID') # New relic configuration if environment == PROD_ENVIRONMENT: newrelic.agent.initialize('newrelic.ini') elif environment == QA_ENVIRONMENT: newrelic.agent.initialize('newrelic.ini') # Snowflake SNOWFLAKE_ACCOUNT = os.environ.get('SNOWFLAKE_ACCOUNT') SNOWFLAKE_USER = os.environ.get('SNOWFLAKE_USER') SNOWFLAKE_PASSWORD = os.environ.get('SNOWFLAKE_PASSWORD') SNOWFLAKE_ROLE = os.environ.get('SNOWFLAKE_ROLE') SNOWFLAKE_WAREHOUSE = os.environ.get('SNOWFLAKE_WAREHOUSE') SNOWFLAKE_SCHEMA = os.environ.get('SNOWFLAKE_SCHEMA', 'DEV') SNOWFLAKE_DATABASE = os.environ.get('SNOWFLAKE_DATABASE') SNOWFLAKE_POOL_SIZE = 15 # UWSGI number of threads SNOWFLAKE_POOL_RECYCLE = 4 * 55 * 60 # Snowflake timeout: ~4 hours SNOWFLAKE_POOL_MAX_OVERFLOW = 5 SNOWFLAKE_POOL_PRE_PING = False SNOWFLAKE_POOL_RESET_ON_RETURN = None ENGAGEMENT_SKIPS_AND_SAVES_FEATURE_FLAG_NAME = 'engagement_skips_saves' PLACEMENT_URL_FEATURE_FLAG_NAME = 'placement_url' PLAYLIST_METADATA_CACHE_CODES = (200, 400, 404) PLAYLIST_METADATA_CACHE_TTL = int( # A day by default os.environ.get('PLAYLIST_METADATA_CACHE_TTL', 86400)) CURRENT_COMMIT_HASH = os.environ.get('CURRENT_COMMIT_HASH', '')