"""This file contains configuration data for python daemon and workers.""" import logging import os # Application info APP_NAME = 'daemon-notifications-delivery' 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 # ------------------- # 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 deliveries QUEUE_READER_THREADS = int(os.environ.get('QUEUE_READER_THREADS', 1)) API_EXECUTOR_THREADS = int(os.environ.get('API_EXECUTOR_THREADS', 1)) MAX_SQS_MESSAGES = int(os.environ.get('MAX_SQS_MESSAGES', 10)) # 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 MAX_SQS_MESSAGES STOP_TIMEOUT = 100 DEBUG = int(os.environ.get('DEBUG', 0)) TEMPLATE_PATH = os.path.join(os.path.dirname(__file__), 'templates') # i18n I18N_FOLDER_NAME = 'i18n' I18N_DOMAIN = 'messages' I18N_DEFAULT_LOCALE = 'en' BFF_NOTIFICATIONS_URL = os.environ.get('BFF_NOTIFICATIONS_URL') SEGMENT_WRITE_KEY = os.environ.get('SEGMENT_WRITE_KEY') # 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' # Segment SEGMENT_WRITE_KEY = os.environ.get('SEGMENT_WRITE_KEY', None) WORKSTATION_HOST = os.environ.get('WORKSTATION_HOST', 'workstation.qaorch.com') GET_STREAM_FEED_GROUPS = [ 'label_analytics_digest', 'label_spike_detector', 'label_video_product_rejection', 'label_video_product_approval', 'email_notification_new_release', 'email_notification_rejection', ] # Allow to override email sender address (useful for local server) EMAIL_SENDER = os.environ.get('EMAIL_SENDER') # Heartbeat config HEARTBEAT_INTERVAL = int(os.environ.get('HEARTBEAT_INTERVAL', 5)) # seconds HEARTBEAT_TIMEOUT = int(os.environ.get('HEARTBEAT_TIMEOUT', HEARTBEAT_INTERVAL * 2)) # seconds HEARTBEAT_FILE = os.environ.get('HEARTBEAT_FILE', f'/tmp/{APP_NAME}-heartbeat.json')