"""This file contains configuration data for python daemon and workers.""" import logging import os from os.path import abspath from os.path import dirname from os.path import join from os.path import pardir from dotenv import load_dotenv # Load environment variables from a .env file if present dotenv_path = abspath(join(dirname(__file__), pardir, '.env')) load_dotenv(dotenv_path) # Application info APP_NAME = 'daemon-sales-ingest' APP_VERSION = '0.0.1' # Environments ENVIRONMENT_PROD = 'prod' ENVIRONMENT_DEV = 'dev' ENVIRONMENT_QA = 'qa' ENVIRONMENT_TEST = 'test' ENVIRONMENT = os.environ.get('Environment', ENVIRONMENT_DEV) # Amazon Web Services # ------------------- AWS_DEFAULT_REGION = os.environ.get('AWS_DEFAULT_REGION', 'us-east-1') # Queue configuration # ------------------- # All queues are prefixed with the environment name (for policy settings) and # the name of the service (which allows to quickly identify unused pidbox). SQS_QUEUE_URL = os.environ.get('SQS_QUEUE_URL') SQS_MESSAGE_RETENTION_PERIOD = 1200 SQS_WAIT_TIME_SECONDS = 20 SQS_MESSAGE_VISIBILITY_TIMEOUT = 60 # Logging # ------- # Sentry: allows us to track effectively exceptions. SENTRY_DSN = os.environ.get('SENTRY_DSN') # Loggly LOGGER_DSN = os.environ.get('LOGGER_DSN') LOGGER_LEVEL = getattr(logging, os.environ.get('LOGGER_LEVEL', 'INFO')) LOGGER_NAME = 'ows1' # Application settings # -------------------- # Number of worker threads for picking the messages from SQS # and executing the PDF generation QUEUE_READER_THREADS = int(os.environ.get('QUEUE_READER_THREADS', 1)) API_EXECUTOR_THREADS = int(os.environ.get('API_EXECUTOR_THREADS', 1)) # Number of messages to be prefetched from SQS into internal Queue PREFETCH_COUNT = API_EXECUTOR_THREADS # Number of messages to pull from SQS (max 10) SQS_NUM_MESSAGES = PREFETCH_COUNT if PREFETCH_COUNT <= 10 else 10 STOP_TIMEOUT = 100 SECRETSMANAGER_KEY_NAME = os.environ.get('SECRETSMANAGER_KEY_NAME') LOCAL_FILEPATH = os.environ.get('LOCAL_FILEPATH', '/mnt/data/mysql/sales.tsv') DEBUG = int(os.environ.get('DEBUG', 0)) # Override default config settings for particular environments # ------------------------------------------------------------ # Dev if ENVIRONMENT == ENVIRONMENT_DEV: DEBUG = 1 # Prod and QA if ENVIRONMENT in (ENVIRONMENT_QA, ENVIRONMENT_PROD): assert LOGGER_DSN, 'LOGGER_DSN env variable required in prod environment' assert SENTRY_DSN, 'SENTRY_DSN env variable required in prod environment'