Skip to content
This repository was archived by the owner on Oct 23, 2023. It is now read-only.

Commit 83984a2

Browse files
committed
Discover Lambda and GAE
In environments which look like AWS Lambda or Google App Engine utilize the synchronous transport. @getsentry/python Fixes GH-816
1 parent 3c17e45 commit 83984a2

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

raven/conf/remote.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,39 @@
11
from __future__ import absolute_import
22

3+
import logging
4+
import os
35
import warnings
46

57
from raven._compat import PY2, text_type
68
from raven.exceptions import InvalidDsn
7-
from raven.transport.threaded import ThreadedHTTPTransport
89
from raven.utils.encoding import to_string
910
from raven.utils.urlparse import parse_qsl, urlparse
1011

1112
ERR_UNKNOWN_SCHEME = 'Unsupported Sentry DSN scheme: {0} ({1})'
1213

13-
DEFAULT_TRANSPORT = ThreadedHTTPTransport
14+
logger = logging.getLogger('raven')
15+
16+
17+
def discover_default_transport():
18+
from raven.transport.threaded import ThreadedHTTPTransport
19+
from raven.transport.http import HTTPTransport
20+
21+
# Google App Engine
22+
# https://cloud.google.com/appengine/docs/python/how-requests-are-handled#Python_The_environment
23+
if 'CURRENT_VERSION_ID' in os.environ and 'INSTANCE_ID' in os.environ:
24+
logger.info('Detected environment to be Google App Engine. Using synchronous HTTP transport.')
25+
return HTTPTransport
26+
27+
# AWS Lambda
28+
# https://alestic.com/2014/11/aws-lambda-environment/
29+
if 'LAMBDA_TASK_ROOT' in os.environ:
30+
logger.info('Detected environment to be AWS Lambda. Using synchronous HTTP transport.')
31+
return HTTPTransport
32+
33+
return ThreadedHTTPTransport
34+
35+
36+
DEFAULT_TRANSPORT = discover_default_transport()
1437

1538

1639
class RemoteConfig(object):

0 commit comments

Comments
 (0)