From 4a147f08df0f435763c39d168d27a29fab8a0cff Mon Sep 17 00:00:00 2001 From: Maximillian Dornseif Date: Thu, 1 Feb 2018 21:23:05 +0100 Subject: [PATCH] Fixing App Engine auto configuration [GH-1192] This works around the issue described in #1192. With this patch `Client('https://public_key:secret_key@sentry.io/project_id')` works as expected on Google App Engine and AWS lambda. This archived by monkey patching the default Transports for `http` and `https`. --- raven/conf/remote.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/raven/conf/remote.py b/raven/conf/remote.py index 4afe5876c..7de0f40aa 100644 --- a/raven/conf/remote.py +++ b/raven/conf/remote.py @@ -18,19 +18,26 @@ def discover_default_transport(): from raven.transport.threaded import ThreadedHTTPTransport from raven.transport.http import HTTPTransport + default_transport = ThreadedHTTPTransport + # Google App Engine # https://cloud.google.com/appengine/docs/python/how-requests-are-handled#Python_The_environment if 'CURRENT_VERSION_ID' in os.environ and 'INSTANCE_ID' in os.environ: logger.info('Detected environment to be Google App Engine. Using synchronous HTTP transport.') - return HTTPTransport + default_transport = HTTPTransport # AWS Lambda # https://alestic.com/2014/11/aws-lambda-environment/ if 'LAMBDA_TASK_ROOT' in os.environ: logger.info('Detected environment to be AWS Lambda. Using synchronous HTTP transport.') - return HTTPTransport + default_transport = HTTPTransport + + if default_transport == HTTPTransport: + # make HTTPTransport the default transport for http + HTTPTransport.scheme = ['http', 'https', 'sync+http', 'sync+https'] + ThreadedHTTPTransport.scheme = ['threaded+http', 'threaded+https'] - return ThreadedHTTPTransport + return default_transport DEFAULT_TRANSPORT = discover_default_transport()