def make_wsgi_app(app_config): cfg = config.parse_config(app_config) signer = MessageSigner(cfg.ads_tracking.click_secret) metrics_client = make_metrics_client(app_config) baseplate = Baseplate() baseplate.configure_logging() baseplate.configure_metrics(metrics_client) baseplate.add_to_context("events", events.EventQueue("production")) baseplate.add_to_context("events_test", events.EventQueue("test")) configurator = Configurator(settings=app_config) baseplate_configurator = BaseplateConfigurator(baseplate) configurator.include(baseplate_configurator.includeme) controller = TrackingService( signer=signer, ) configurator.add_route("health", "/health", request_method="GET") configurator.add_view( controller.is_healthy, route_name="health", renderer="json") configurator.add_route("click", "/click", request_method="GET") configurator.add_view( controller.track_click, route_name="click", renderer="json") return configurator.make_wsgi_app()
def make_wsgi_app(app_config): cfg = config.parse_config(app_config, { "activity": { "endpoint": config.Endpoint, }, }) metrics_client = make_metrics_client(app_config) pool = ThriftConnectionPool(cfg.activity.endpoint) baseplate = Baseplate() baseplate.configure_logging() baseplate.configure_metrics(metrics_client) baseplate.add_to_context( "activity", ThriftContextFactory(pool, ActivityService.Client)) configurator = Configurator(settings=app_config) baseplate_configurator = BaseplateConfigurator(baseplate) configurator.include(baseplate_configurator.includeme) controller = ActivityGateway() configurator.add_route("health", "/health", request_method="GET") configurator.add_view(controller.is_healthy, route_name="health", renderer="json") configurator.add_route("pixel", "/{context_id:[A-Za-z0-9_]{,40}}.png", request_method="GET") configurator.add_view(controller.pixel, route_name="pixel") return configurator.make_wsgi_app()
def make_wsgi_app(app_config): cfg = config.parse_config(app_config) signer = MessageSigner(cfg.ads_tracking.click_secret) metrics_client = make_metrics_client(app_config) baseplate = Baseplate() baseplate.configure_logging() baseplate.configure_metrics(metrics_client) baseplate.add_to_context("events", events.EventQueue("production")) baseplate.add_to_context("events_test", events.EventQueue("test")) configurator = Configurator(settings=app_config) baseplate_configurator = BaseplateConfigurator(baseplate) configurator.include(baseplate_configurator.includeme) controller = TrackingService(signer=signer, ) configurator.add_route("health", "/health", request_method="GET") configurator.add_view(controller.is_healthy, route_name="health", renderer="json") configurator.add_route("click", "/click", request_method="GET") configurator.add_view(controller.track_click, route_name="click", renderer="json") return configurator.make_wsgi_app()
def make_processor(app_config): # pragma: nocover cfg = config.parse_config(app_config, { "activity": { "window": config.Timespan, "fuzz_threshold": config.Integer, }, "redis": { "url": config.String, "max_connections": config.Optional(config.Integer, default=100), }, }) metrics_client = make_metrics_client(app_config) redis_pool = redis.BlockingConnectionPool.from_url( cfg.redis.url, max_connections=cfg.redis.max_connections, timeout=0.1, ) baseplate = Baseplate() baseplate.configure_logging() baseplate.configure_metrics(metrics_client) baseplate.add_to_context("redis", RedisContextFactory(redis_pool)) counter = ActivityCounter(cfg.activity.window.total_seconds()) handler = Handler( fuzz_threshold=cfg.activity.fuzz_threshold, counter=counter, ) processor = ActivityService.ContextProcessor(handler) event_handler = BaseplateProcessorEventHandler(logger, baseplate) processor.setEventHandler(event_handler) return processor
def make_wsgi_app(app_config): cfg = config.parse_config(app_config, { "session": { "secret": config.Base64, } }) # configure pyramid configurator = Configurator(settings=app_config) configurator.include("pyramid_jinja2") configurator.set_default_csrf_options(require_csrf=True) configurator.set_session_factory(SignedCookieSessionFactory(cfg.session.secret)) authn_policy = RemoteUserAuthenticationPolicy(environ_key="HTTP_AUTHENTICATED_USER") authz_policy = ACLAuthorizationPolicy() configurator.set_authentication_policy(authn_policy) configurator.set_authorization_policy(authz_policy) configurator.add_request_method(get_authenticated_user, "user", reify=True) configurator.add_static_view(name="static", path="condor:static/") configurator.add_route("home", "/") configurator.add_route("polls", "/polls") configurator.add_route("poll", "/polls/{id:\d+}") configurator.scan("condor.views") # configure baseplate metrics_client = make_metrics_client(app_config) baseplate = Baseplate() baseplate.configure_logging() baseplate.configure_metrics(metrics_client) engine = engine_from_config(app_config, prefix="database.") baseplate.add_to_context("db", SQLAlchemySessionContextFactory(engine)) baseplate_configurator = BaseplateConfigurator(baseplate) configurator.include(baseplate_configurator.includeme) return configurator.make_wsgi_app()
def make_processor(app_config): # pragma: nocover cfg = config.parse_config(app_config, { "activity": { "window": config.Timespan, }, "tracing": { "endpoint": config.Optional(config.Endpoint), "service_name": config.String, }, "redis": { "url": config.String, "max_connections": config.Optional(config.Integer, default=100), }, }) metrics_client = metrics_client_from_config(app_config) tracing_client = tracing_client_from_config(app_config) error_reporter = error_reporter_from_config(app_config, __name__) redis_pool = redis.BlockingConnectionPool.from_url( cfg.redis.url, max_connections=cfg.redis.max_connections, timeout=0.1, ) baseplate = Baseplate() baseplate.configure_logging() baseplate.configure_metrics(metrics_client) baseplate.configure_tracing(tracing_client) baseplate.configure_error_reporting(error_reporter) baseplate.add_to_context("redis", RedisContextFactory(redis_pool)) counter = ActivityCounter(cfg.activity.window.total_seconds()) handler = Handler(counter=counter) processor = ActivityService.ContextProcessor(handler) event_handler = BaseplateProcessorEventHandler(logger, baseplate) processor.setEventHandler(event_handler) return processor
def make_wsgi_app(app_config): cfg = config.parse_config(app_config, { # TODO: add your config spec here }) metrics_client = make_metrics_client(app_config) baseplate = Baseplate() baseplate.configure_logging() baseplate.configure_metrics(metrics_client) configurator = Configurator(settings=app_config) baseplate_configurator = BaseplateConfigurator(baseplate) configurator.include(baseplate_configurator.includeme) controller = {{ cookiecutter.service_name }}() configurator.add_route("health", "/health", request_method="GET") configurator.add_view( controller.is_healthy, route_name="health", renderer="json") # TODO: add more routes and views here return configurator.make_wsgi_app()