def fromenv(cls): """ Create a `wcraas_storage.Config` from Environment Variables. >>> conf = Config.fromenv() >>> type(conf) <class 'config.Config'> >>> conf._fields ('amqp', 'mongo', 'mapping', 'loglevel') >>> conf.amqp AMQPConfig(host='localhost', port=5672, user='******', password='******') >>> conf.mongo mongo = MongoConfig(host='localhost', port=27017, db='wcraas', user=None, password=None) >>> conf.mapping {} >>> conf.loglevel 20 """ env = Env() env.read_env() return cls( amqp=AMQPConfig.fromenv(), mongo=MongoConfig.fromenv(), mapping=env.json("QUEUE_COLLECTION_MAP", "{}") or dict(), loglevel=getattr(logging, env.str("LOGLEVEL", "INFO")), )
import os from flask import Flask from healthcheck import HealthCheck, EnvironmentDump from environs import Env import json import logging import requests import sys env = Env() env.read_env() urls = env.json("URL") #urls = json.loads(os.environ["URL"]) app = Flask(__name__) def setup_logging(): if not app.debug: # In production mode, add log handler to sys.stderr. handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.INFO) formatter = logging.Formatter( "%(asctime)s %(name)-12s %(levelname)-8s %(message)s") handler.setFormatter(formatter) app.logger.addHandler(handler) setup_logging() for url in urls:
# definition of tester cycle, it will test every CYCLE_TESTER second CYCLE_TESTER = env.int('CYCLE_TESTER', 20) # definition of getter cycle, it will get proxy every CYCLE_GETTER second CYCLE_GETTER = env.int('CYCLE_GETTER', 100) GET_TIMEOUT = env.int('GET_TIMEOUT', 10) # definition of tester TEST_URL = env.str('TEST_URL', 'https://www.baidu.com') TEST_TIMEOUT = env.int('TEST_TIMEOUT', 10) TEST_BATCH = env.int('TEST_BATCH', 20) # only save anonymous proxy TEST_ANONYMOUS = True TEST_HEADERS = env.json( 'TEST_HEADERS', json.dumps({ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko' ') Chrome/54.0.2840.71 Safari/537.36', })) # TEST_VALID_STATUS = env.list('TEST_VALID_STATUS', [200, 206, 302]) TEST_VALID_STATUS = env.list('TEST_VALID_STATUS', [200]) # definition of api API_HOST = env.str('API_HOST', '0.0.0.0') API_PORT = env.int('API_PORT', 5555) API_THREADED = env.bool('API_THREADED', True) # flags of enable ENABLE_TESTER = env.bool('ENABLE_TESTER', True) ENABLE_GETTER = env.bool('ENABLE_GETTER', True) ENABLE_SERVER = env.bool('ENABLE_SERVER', True)
import logging from environs import Env env = Env() training_service_config = { "host": env("TRAINING_SERVICE_HOST"), "port": env("TRAINING_SERVICE_PORT"), "api_train_path": env("TRAINING_SERVICE_API_TRAIN_PATH"), "timeout": env.int("TRAINING_REQUESTS_TIMEOUT"), "appinsights_key": env("APP_INSIGHTS_INSTRUMENTATION_KEY") } mlflow_models_mapping = env.json('MLFLOW_MODELS_MAPPING') service_config = { "service_name": env("SERVICE_NAME"), "log_level": env.int("LOG_LEVEL", logging.INFO), "port": env.int("PORT", 80) }