@@ -1254,6 +1254,25 @@ <h1 class="title"><span class="name">sentry_sdk.integrations.wsgi</span> module<
1254
1254
1255
1255
1256
1256
< span class ="k "> def</ span > < span class ="nf "> _make_wsgi_event_processor</ span > < span class ="p "> (</ span > < span class ="n "> environ</ span > < span class ="p "> ):</ span >
1257
+ < span class ="c1 "> # It's a bit unfortunate that we have to extract and parse the request data</ span >
1258
+ < span class ="c1 "> # from the environ so eagerly, but there are a few good reasons for this.</ span >
1259
+ < span class ="c1 "> #</ span >
1260
+ < span class ="c1 "> # We might be in a situation where the scope/hub never gets torn down</ span >
1261
+ < span class ="c1 "> # properly. In that case we will have an unnecessary strong reference to</ span >
1262
+ < span class ="c1 "> # all objects in the environ (some of which may take a lot of memory) when</ span >
1263
+ < span class ="c1 "> # we're really just interested in a few of them.</ span >
1264
+ < span class ="c1 "> #</ span >
1265
+ < span class ="c1 "> # Keeping the environment around for longer than the request lifecycle is</ span >
1266
+ < span class ="c1 "> # also not necessarily something uWSGI can deal with:</ span >
1267
+ < span class ="c1 "> # https://github.com/unbit/uwsgi/issues/1950</ span >
1268
+
1269
+ < span class ="n "> client_ip</ span > < span class ="o "> =</ span > < span class ="n "> get_client_ip</ span > < span class ="p "> (</ span > < span class ="n "> environ</ span > < span class ="p "> )</ span >
1270
+ < span class ="n "> request_url</ span > < span class ="o "> =</ span > < span class ="n "> get_request_url</ span > < span class ="p "> (</ span > < span class ="n "> environ</ span > < span class ="p "> )</ span >
1271
+ < span class ="n "> query_string</ span > < span class ="o "> =</ span > < span class ="n "> environ</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="s2 "> "QUERY_STRING"</ span > < span class ="p "> )</ span >
1272
+ < span class ="n "> method</ span > < span class ="o "> =</ span > < span class ="n "> environ</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="s2 "> "REQUEST_METHOD"</ span > < span class ="p "> )</ span >
1273
+ < span class ="n "> env</ span > < span class ="o "> =</ span > < span class ="nb "> dict</ span > < span class ="p "> (</ span > < span class ="n "> _get_environ</ span > < span class ="p "> (</ span > < span class ="n "> environ</ span > < span class ="p "> ))</ span >
1274
+ < span class ="n "> headers</ span > < span class ="o "> =</ span > < span class ="n "> _filter_headers</ span > < span class ="p "> (</ span > < span class ="nb "> dict</ span > < span class ="p "> (</ span > < span class ="n "> _get_headers</ span > < span class ="p "> (</ span > < span class ="n "> environ</ span > < span class ="p "> )))</ span >
1275
+
1257
1276
< span class ="k "> def</ span > < span class ="nf "> event_processor</ span > < span class ="p "> (</ span > < span class ="n "> event</ span > < span class ="p "> ,</ span > < span class ="n "> hint</ span > < span class ="p "> ):</ span >
1258
1277
< span class ="k "> with</ span > < span class ="n "> capture_internal_exceptions</ span > < span class ="p "> ():</ span >
1259
1278
< span class ="c1 "> # if the code below fails halfway through we at least have some data</ span >
@@ -1262,22 +1281,13 @@ <h1 class="title"><span class="name">sentry_sdk.integrations.wsgi</span> module<
1262
1281
< span class ="k "> if</ span > < span class ="n "> _should_send_default_pii</ span > < span class ="p "> ():</ span >
1263
1282
< span class ="n "> user_info</ span > < span class ="o "> =</ span > < span class ="n "> event</ span > < span class ="o "> .</ span > < span class ="n "> setdefault</ span > < span class ="p "> (</ span > < span class ="s2 "> "user"</ span > < span class ="p "> ,</ span > < span class ="p "> {})</ span >
1264
1283
< span class ="k "> if</ span > < span class ="s2 "> "ip_address"</ span > < span class ="ow "> not</ span > < span class ="ow "> in</ span > < span class ="n "> user_info</ span > < span class ="p "> :</ span >
1265
- < span class ="n "> user_info</ span > < span class ="p "> [</ span > < span class ="s2 "> "ip_address"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> get_client_ip</ span > < span class ="p "> (</ span > < span class ="n "> environ</ span > < span class ="p "> )</ span >
1266
-
1267
- < span class ="k "> if</ span > < span class ="s2 "> "url"</ span > < span class ="ow "> not</ span > < span class ="ow "> in</ span > < span class ="n "> request_info</ span > < span class ="p "> :</ span >
1268
- < span class ="n "> request_info</ span > < span class ="p "> [</ span > < span class ="s2 "> "url"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> get_request_url</ span > < span class ="p "> (</ span > < span class ="n "> environ</ span > < span class ="p "> )</ span >
1269
-
1270
- < span class ="k "> if</ span > < span class ="s2 "> "query_string"</ span > < span class ="ow "> not</ span > < span class ="ow "> in</ span > < span class ="n "> request_info</ span > < span class ="p "> :</ span >
1271
- < span class ="n "> request_info</ span > < span class ="p "> [</ span > < span class ="s2 "> "query_string"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> environ</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="s2 "> "QUERY_STRING"</ span > < span class ="p "> )</ span >
1272
-
1273
- < span class ="k "> if</ span > < span class ="s2 "> "method"</ span > < span class ="ow "> not</ span > < span class ="ow "> in</ span > < span class ="n "> request_info</ span > < span class ="p "> :</ span >
1274
- < span class ="n "> request_info</ span > < span class ="p "> [</ span > < span class ="s2 "> "method"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> environ</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="s2 "> "REQUEST_METHOD"</ span > < span class ="p "> )</ span >
1275
-
1276
- < span class ="k "> if</ span > < span class ="s2 "> "env"</ span > < span class ="ow "> not</ span > < span class ="ow "> in</ span > < span class ="n "> request_info</ span > < span class ="p "> :</ span >
1277
- < span class ="n "> request_info</ span > < span class ="p "> [</ span > < span class ="s2 "> "env"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="nb "> dict</ span > < span class ="p "> (</ span > < span class ="n "> _get_environ</ span > < span class ="p "> (</ span > < span class ="n "> environ</ span > < span class ="p "> ))</ span >
1284
+ < span class ="n "> user_info</ span > < span class ="o "> .</ span > < span class ="n "> setdefault</ span > < span class ="p "> (</ span > < span class ="s2 "> "ip_address"</ span > < span class ="p "> ,</ span > < span class ="n "> client_ip</ span > < span class ="p "> )</ span >
1278
1285
1279
- < span class ="k "> if</ span > < span class ="s2 "> "headers"</ span > < span class ="ow "> not</ span > < span class ="ow "> in</ span > < span class ="n "> request_info</ span > < span class ="p "> :</ span >
1280
- < span class ="n "> request_info</ span > < span class ="p "> [</ span > < span class ="s2 "> "headers"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> _filter_headers</ span > < span class ="p "> (</ span > < span class ="nb "> dict</ span > < span class ="p "> (</ span > < span class ="n "> _get_headers</ span > < span class ="p "> (</ span > < span class ="n "> environ</ span > < span class ="p "> )))</ span >
1286
+ < span class ="n "> request_info</ span > < span class ="o "> .</ span > < span class ="n "> setdefault</ span > < span class ="p "> (</ span > < span class ="s2 "> "url"</ span > < span class ="p "> ,</ span > < span class ="n "> request_url</ span > < span class ="p "> )</ span >
1287
+ < span class ="n "> request_info</ span > < span class ="o "> .</ span > < span class ="n "> setdefault</ span > < span class ="p "> (</ span > < span class ="s2 "> "query_string"</ span > < span class ="p "> ,</ span > < span class ="n "> query_string</ span > < span class ="p "> )</ span >
1288
+ < span class ="n "> request_info</ span > < span class ="o "> .</ span > < span class ="n "> setdefault</ span > < span class ="p "> (</ span > < span class ="s2 "> "method"</ span > < span class ="p "> ,</ span > < span class ="n "> method</ span > < span class ="p "> )</ span >
1289
+ < span class ="n "> request_info</ span > < span class ="o "> .</ span > < span class ="n "> setdefault</ span > < span class ="p "> (</ span > < span class ="s2 "> "env"</ span > < span class ="p "> ,</ span > < span class ="n "> env</ span > < span class ="p "> )</ span >
1290
+ < span class ="n "> request_info</ span > < span class ="o "> .</ span > < span class ="n "> setdefault</ span > < span class ="p "> (</ span > < span class ="s2 "> "headers"</ span > < span class ="p "> ,</ span > < span class ="n "> headers</ span > < span class ="p "> )</ span >
1281
1291
1282
1292
< span class ="k "> return</ span > < span class ="n "> event</ span >
1283
1293
0 commit comments