chore(deps): update dependency sentry-sdk to v1.45.1
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
sentry-sdk (changelog) | dependencies | minor |
1.18.0 -> 1.45.1
|
Release Notes
getsentry/sentry-python (sentry-sdk)
v1.45.1
This is a security backport release.
-
Don't send full env to subprocess (
892dd80
) by @kmichel-aivenSee also https://github.com/getsentry/sentry-python/security/advisories/GHSA-g92j-qhmh-64v2
v1.45.0
This is the final 1.x release for the forseeable future. Development will continue on the 2.x release line. The first 2.x version will be available in the next few weeks.
Various fixes & improvements
-
Allow to upsert monitors (#2929) by @sentrivana
It's now possible to provide
monitor_config
to themonitor
decorator/context manager directly:from sentry_sdk.crons import monitor
v1.44.1
Various fixes & improvements
-
Make
monitor
async friendly (#2912) by @sentrivanaYou can now decorate your async functions with the
monitor
decorator and they will correctly report their duration and completion status. -
Fixed
Event | None
runtimeTypeError
(#2928) by @szokeasaurusrex
v1.44.0
Various fixes & improvements
- ref: Define types at runtime (#2914) by @szokeasaurusrex
- Explicit reexport of types (#2866) (#2913) by @szokeasaurusrex
- feat(profiling): Add thread data to spans (#2843) by @Zylphrex
v1.43.0
Various fixes & improvements
-
Add optional
keep_alive
(#2842) by @sentrivanaIf you're experiencing frequent network issues between the SDK and Sentry, you can try turning on TCP keep-alive:
import sentry_sdk sentry_sdk.init(
...your usual settings...
keep_alive=True,
)
- Add support for Celery Redbeat cron tasks (#​2643) by @​kwigley
The SDK now supports the Redbeat scheduler in addition to the default
Celery Beat scheduler for auto instrumenting crons. See
[the docs](https://docs.sentry.io/platforms/python/integrations/celery/crons/)
for more information about how to set this up.
- `aws_event` can be an empty list (#​2849) by @​sentrivana
- Re-export `Event` in `types.py` (#​2829) by @​szokeasaurusrex
- Small API docs improvement (#​2828) by @​antonpirker
- Fixed OpenAI tests (#​2834) by @​antonpirker
- Bump `checkouts/data-schemas` from `ed078ed` to `8232f17` (#​2832) by @​dependabot
v1.42.0
Various fixes & improvements
-
New integration: OpenAI integration (#2791) by @colin-sentry
We added an integration for OpenAI to capture errors and also performance data when using the OpenAI Python SDK.
Useage:
This integrations is auto-enabling, so if you have the
openai
package in your project it will be enabled. Just initialize Sentry before you create your OpenAI client.from openai import OpenAI import sentry_sdk sentry_sdk.init( dsn="___PUBLIC_DSN___", enable_tracing=True, traces_sample_rate=1.0, ) client = OpenAI()
For more information, see the documentation for OpenAI integration.
-
Discard open OpenTelemetry spans after 10 minutes (#2801) by @antonpirker
-
Propagate sentry-trace and baggage headers to Huey tasks (#2792) by @cnschn
-
Added Event type (#2753) by @szokeasaurusrex
-
Improve scrub_dict typing (#2768) by @szokeasaurusrex
-
Dependencies: bump types-protobuf from 4.24.0.20240302 to 4.24.0.20240311 (#2797) by @dependabot
v1.41.0
Various fixes & improvements
-
Add recursive scrubbing to
EventScrubber
(#2755) by @Cheapshot003By default, the
EventScrubber
will not search your events for potential PII recursively. With this release, you can enable this behavior with:import sentry_sdk from sentry_sdk.scrubber import EventScrubber sentry_sdk.init(
...your usual settings...
event_scrubber=EventScrubber(recursive=True),
)
- Expose `socket_options` (#​2786) by @​sentrivana
If the SDK is experiencing connection issues (connection resets, server
closing connection without response, etc.) while sending events to Sentry,
tweaking the default `urllib3` socket options to the following can help:
```python
import socket
from urllib3.connection import HTTPConnection
import sentry_sdk
sentry_sdk.init(
### ...your usual settings...
socket_options=HTTPConnection.default_socket_options + [
(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
### note: skip the following line if you're on MacOS since TCP_KEEPIDLE doesn't exist there
(socket.SOL_TCP, socket.TCP_KEEPIDLE, 45),
(socket.SOL_TCP, socket.TCP_KEEPINTVL, 10),
(socket.SOL_TCP, socket.TCP_KEEPCNT, 6),
],
)
- Allow to configure merge target for releases (#2777) by @sentrivana
- Allow empty character in metric tags values (#2775) by @viglia
- Replace invalid tag values with an empty string instead of _ (#2773) by @markushi
- Add documentation comment to
scrub_list
(#2769) by @szokeasaurusrex - Fixed regex to parse version in lambda package file (#2767) by @antonpirker
- xfail broken AWS Lambda tests for now (#2794) by @sentrivana
- Removed print statements because it messes with the tests (#2789) by @antonpirker
- Bump
types-protobuf
from 4.24.0.20240129 to 4.24.0.20240302 (#2782) by @dependabot - Bump
checkouts/data-schemas
fromeb941c2
toed078ed
(#2781) by @dependabot
v1.40.6
Various fixes & improvements
- Fix compatibility with
greenlet
/gevent
(#2756) by @sentrivana - Fix query source relative filepath (#2717) by @gggritso
- Support
clickhouse-driver==0.2.7
(#2752) by @sentrivana - Bump
checkouts/data-schemas
from6121fd3
toeb941c2
(#2747) by @dependabot
v1.40.5
Various fixes & improvements
-
Deprecate
last_event_id()
. (#2749) by @antonpirker -
Warn if uWSGI is set up without proper thread support (#2738) by @sentrivana
uWSGI has to be run in threaded mode for the SDK to run properly. If this is not the case, the consequences could range from features not working unexpectedly to uWSGI workers crashing.
Please make sure to run uWSGI with both
--enable-threads
and--py-call-uwsgi-fork-hooks
. -
parsed_url
can beNone
(#2734) by @sentrivana -
Python 3.7 is not supported anymore by Lambda, so removed it and added 3.12 (#2729) by @antonpirker
v1.40.4
Various fixes & improvements
- Only start metrics flusher thread on demand (#2727) by @sentrivana
- Bump checkouts/data-schemas from
aa7058c
to6121fd3
(#2724) by @dependabot
v1.40.3
Various fixes & improvements
- Turn off metrics for uWSGI (#2720) by @sentrivana
- Minor improvements (#2714) by @antonpirker
v1.40.2
Various fixes & improvements
- test: Fix
pytest
error (#2712) by @szokeasaurusrex - build(deps): bump types-protobuf from 4.24.0.4 to 4.24.0.20240129 (#2691) by @dependabot
v1.40.1
Various fixes & improvements
- Fix uWSGI workers hanging (#2694) by @sentrivana
- Make metrics work with
gevent
(#2694) by @sentrivana - Guard against
engine.url
beingNone
(#2708) by @sentrivana - Fix performance regression in
sentry_sdk.utils._generate_installed_modules
(#2703) by @GlenWalker - Guard against Sentry initialization mid SQLAlchemy cursor (#2702) by @apmorton
- Fix yaml generation script (#2695) by @sentrivana
- Fix AWS Lambda workflow (#2710) by @sentrivana
- Bump
codecov/codecov-action
from 3 to 4 (#2706) by @dependabot - Bump
actions/cache
from 3 to 4 (#2661) by @dependabot - Bump
actions/checkout
from 3.1.0 to 4.1.1 (#2561) by @dependabot - Bump
github/codeql-action
from 2 to 3 (#2603) by @dependabot - Bump
actions/setup-python
from 4 to 5 (#2577) by @dependabot
v1.40.0
Various fixes & improvements
- Enable metrics related settings by default (#2685) by @iambriccardo
- Fix
UnicodeDecodeError
on Python 2 (#2657) by @sentrivana - Enable DB query source by default (#2629) by @sentrivana
- Fix query source duration check (#2675) by @sentrivana
- Reformat with
black==24.1.0
(#2680) by @sentrivana - Cleaning up existing code to prepare for new Scopes API (#2611) by @antonpirker
- Moved redis related tests to databases (#2674) by @antonpirker
- Improve
sentry_sdk.trace
type hints (#2633) by @szokeasaurusrex - Bump
checkouts/data-schemas
frome9f7d58
toaa7058c
(#2639) by @dependabot
v1.39.2
Various fixes & improvements
- Fix timestamp in transaction created by OTel (#2627) by @antonpirker
- Fix relative path in DB query source (#2624) by @antonpirker
- Run more CI checks on 2.0 branch (#2625) by @sentrivana
- Fix tracing
TypeError
for static and class methods (#2559) by @szokeasaurusrex - Fix missing
ctx
in Arq integration (#2600) by @ivanovart - Change
data_category
fromcheck_in
tomonitor
(#2598) by @sentrivana
v1.39.1
Various fixes & improvements
- Fix psycopg2 detection in the Django integration (#2593) by @sentrivana
- Filter out empty string releases (#2591) by @sentrivana
- Fixed local var not present when there is an error in a user's
error_sampler
function (#2511) by @antonpirker - Fixed typing in
aiohttp
(#2590) by @antonpirker
v1.39.0
Various fixes & improvements
- Add support for cluster clients from Redis SDK (#2394) by @md384
- Improve location reporting for timer metrics (#2552) by @mitsuhiko
- Fix Celery
TypeError
with no-argumentapply_async
(#2575) by @szokeasaurusrex - Fix Lambda integration with EventBridge source (#2546) by @davidcroda
- Add max tries to Spotlight (#2571) by @hazAT
- Handle
os.path.devnull
access issues (#2579) by @sentrivana - Change
code.filepath
frame picking logic (#2568) by @sentrivana - Trigger AWS Lambda tests on label (#2538) by @sentrivana
- Run permissions step on pull_request_target but not push (#2548) by @sentrivana
- Hash AWS Lambda test functions based on current revision (#2557) by @sentrivana
- Update Django version in tests (#2562) by @sentrivana
- Make metrics tests non-flaky (#2572) by @antonpirker
v1.38.0
Various fixes & improvements
- Only add trace context to checkins and do not run
event_processors
for checkins (#2536) by @antonpirker - Metric span summaries (#2522) by @mitsuhiko
- Add source context to code locations (#2539) by @jan-auer
- Use in-app filepath instead of absolute path (#2541) by @antonpirker
- Switch to
jinja2
for generating CI yamls (#2534) by @sentrivana
v1.37.1
Various fixes & improvements
- Fix
NameError
onparse_version
with eventlet (#2532) by @sentrivana - build(deps): bump checkouts/data-schemas from
68def1e
toe9f7d58
(#2501) by @dependabot
v1.37.0
Various fixes & improvements
-
Move installed modules code to utils (#2429) by @sentrivana
Note: We moved the internal function
_get_installed_modules
fromsentry_sdk.integrations.modules
tosentry_sdk.utils
. So if you use this function you have to update your imports -
Add code locations for metrics (#2526) by @jan-auer
-
Add query source to DB spans (#2521) by @antonpirker
-
Run integration tests with newest
pytest
(#2518) by @sentrivana -
Bring tests up to date (#2512) by @sentrivana
-
Fix: Prevent global var from being discarded at shutdown (#2530) by @antonpirker
-
Fix: Scope transaction source not being updated in scope.span setter (#2519) by @sl0thentr0py
v1.36.0
Various fixes & improvements
- Django: Support Django 5.0 (#2490) by @sentrivana
- Django: Handling ASGI body in the right way. (#2513) by @antonpirker
- Flask: Test with Flask 3.0 (#2506) by @sentrivana
- Celery: Do not create a span when task is triggered by Celery Beat (#2510) by @antonpirker
- Redis: Ensure
RedisIntegration
is disabled, unlessredis
is installed (#2504) by @szokeasaurusrex - Quart: Fix Quart integration for Quart 0.19.4 (#2516) by @antonpirker
- gRPC: Make async gRPC less noisy (#2507) by @jyggen
v1.35.0
Various fixes & improvements
-
Updated gRPC integration: Asyncio interceptors and easier setup (#2369) by @fdellekart
Our gRPC integration now instruments incoming unary-unary grpc requests and outgoing unary-unary, unary-stream grpc requests using grpcio channels. Everything works now for sync and async code.
Before this release you had to add Sentry interceptors by hand to your gRPC code, now the only thing you need to do is adding the
GRPCIntegration
to yousentry_sdk_init()
call. (See documentation for more information):import sentry_sdk from sentry_sdk.integrations.grpc import GRPCIntegration sentry_sdk.init( dsn="___PUBLIC_DSN___", enable_tracing=True, integrations=[ GRPCIntegration(), ], )
The old way still works, but we strongly encourage you to update your code to the way described above.
-
Python 3.12: Replace deprecated datetime functions (#2502) by @sentrivana
-
Metrics: Unify datetime format (#2409) by @mitsuhiko
-
Celery: Set correct data in
check_in
s (#2500) by @antonpirker -
Celery: Read timezone for Crons monitors from
celery_schedule
if existing (#2497) by @antonpirker -
Django: Removing redundant code in Django tests (#2491) by @vagi8
-
Django: Make reading the request body work in Django ASGI apps. (#2495) by @antonpirker
-
FastAPI: Use wraps on fastapi request call wrapper (#2476) by @nkaras
-
Fix: Probe for psycopg2 and psycopg3 parameters function. (#2492) by @antonpirker
-
Fix: Remove unnecessary TYPE_CHECKING alias (#2467) by @rafrafek
v1.34.0
Various fixes & improvements
- Added Python 3.12 support (#2471, #2483)
- Handle missing
connection_kwargs
inpatch_redis_client
(#2482) by @szokeasaurusrex - Run common test suite on Python 3.12 (#2479) by @sentrivana
v1.33.1
Various fixes & improvements
- Make parse_version work in utils.py itself. (#2474) by @antonpirker
v1.33.0
Various fixes & improvements
- New: Added
error_sampler
option (#2456) by @szokeasaurusrex - Python 3.12: Detect interpreter in shutdown state on thread spawn (#2468) by @mitsuhiko
- Patch eventlet under Sentry SDK (#2464) by @szokeasaurusrex
- Mitigate CPU spikes when sending lots of events with lots of data (#2449) by @antonpirker
- Make
debug
option also configurable via environment (#2450) by @antonpirker - Make sure
get_dsn_parameters
is an actual function (#2441) by @sentrivana - Bump pytest-localserver, add compat comment (#2448) by @sentrivana
- AWS Lambda: Update compatible runtimes for AWS Lambda layer (#2453) by @antonpirker
- AWS Lambda: Load AWS Lambda secrets in Github CI (#2153) by @antonpirker
- Redis: Connection attributes in
redis
database spans (#2398) by @antonpirker - Falcon: Falcon integration checks response status before reporting error (#2465) by @szokeasaurusrex
- Quart: Support Quart 0.19 onwards (#2403) by @pgjones
- Sanic: Sanic integration initial version (#2419) by @szokeasaurusrex
- Django: Fix parsing of Django
path
patterns (#2452) by @sentrivana - Django: Add Django 4.2 to test suite (#2462) by @sentrivana
- Polish changelog (#2434) by @sentrivana
- Update CONTRIBUTING.md (#2443) by @krishvsoni
- Update README.md (#2435) by @sentrivana
v1.32.0
Various fixes & improvements
-
New: Error monitoring for some of the most popular Python GraphQL libraries:
-
Add GQL GraphQL integration (#2368) by @szokeasaurusrex
Usage:
import sentry_sdk from sentry_sdk.integrations.gql import GQLIntegration sentry_sdk.init( dsn='___PUBLIC_DSN___', integrations=[ GQLIntegration(), ], )
-
Add Graphene GraphQL error integration (#2389) by @sentrivana
Usage:
import sentry_sdk from sentry_sdk.integrations.graphene import GrapheneIntegration sentry_sdk.init( dsn='___PUBLIC_DSN___', integrations=[ GrapheneIntegration(), ], )
-
Add Strawberry GraphQL error & tracing integration (#2393) by @sentrivana
Usage:
import sentry_sdk from sentry_sdk.integrations.strawberry import StrawberryIntegration sentry_sdk.init( dsn='___PUBLIC_DSN___', integrations=[
-
make sure to set async_execution to False if you're executing
GraphQL queries synchronously
StrawberryIntegration(async_execution=True),
],
traces_sample_rate=1.0,
)
```
-
Add Ariadne GraphQL error integration (#2387) by @sentrivana
Usage:
import sentry_sdk from sentry_sdk.integrations.ariadne import AriadneIntegration sentry_sdk.init( dsn='___PUBLIC_DSN___', integrations=[ AriadneIntegration(), ], )
-
Capture multiple named groups again (#2432) by @sentrivana
-
Don't fail when upstream scheme is unusual (#2371) by @vanschelven
-
Support new RQ version (#2405) by @antonpirker
-
Remove
utcnow
,utcfromtimestamp
deprecated in Python 3.12 (#2415) by @rmad17 -
Add
trace
to__all__
in top-level__init__.py
(#2401) by @lobsterkatie -
Move minimetrics code to the SDK (#2385) by @mitsuhiko
-
Add configurable compression levels (#2382) by @mitsuhiko
-
Shift flushing by up to a rollup window (#2396) by @mitsuhiko
-
Make a consistent noop flush behavior (#2428) by @mitsuhiko
-
Stronger recursion protection (#2426) by @mitsuhiko
-
Remove
OpenTelemetryIntegration
from__init__.py
(#2379) by @sentrivana -
Update API docs (#2397) by @antonpirker
-
Pin some test requirements because new majors break our tests (#2404) by @antonpirker
-
Run more
requests
,celery
,falcon
tests (#2414) by @sentrivana -
Move
importorskip
s in tests to__init__.py
files (#2412) by @sentrivana -
Fix
mypy
errors (#2433) by @sentrivana -
Fix pre-commit issues (#2424) by @bukzor-sentryio
-
Update CONTRIBUTING.md (#2411) by @sentrivana
-
Bump
sphinx
from 7.2.5 to 7.2.6 (#2378) by @dependabot -
[Experimental] Add explain plan to DB spans (#2315) by @antonpirker
v1.31.0
Various fixes & improvements
-
New: Add integration for
clickhouse-driver
(#2167) by @mimre25For more information, see the documentation for clickhouse-driver for more information.
Usage:
import sentry_sdk from sentry_sdk.integrations.clickhouse_driver import ClickhouseDriverIntegration sentry_sdk.init( dsn='___PUBLIC_DSN___', integrations=[ ClickhouseDriverIntegration(), ], )
-
New: Add integration for
asyncpg
(#2314) by @mimre25For more information, see the documentation for asyncpg for more information.
Usage:
import sentry_sdk from sentry_sdk.integrations.asyncpg import AsyncPGIntegration sentry_sdk.init( dsn='___PUBLIC_DSN___', integrations=[ AsyncPGIntegration(), ], )
-
New: Allow to override
propagate_traces
inCelery
per task (#2331) by @jan-auerFor more information, see the documentation for Celery for more information.
Usage:
import sentry_sdk from sentry_sdk.integrations.celery import CeleryIntegration
Enable global distributed traces (this is the default, just to be explicit.)
sentry_sdk.init(
dsn='___PUBLIC_DSN___',
integrations=[
CeleryIntegration(propagate_traces=True),
],
)
...
This will NOT propagate the trace. (The task will start its own trace):
my_task_b.apply_async(
args=("some_parameter", ),
headers={"sentry-propagate-traces": False},
)
- Prevent Falcon integration from breaking ASGI apps (#​2359) by @​szokeasaurusrex
- Backpressure: only downsample a max of 10 times (#​2347) by @​sl0thentr0py
- Made NoOpSpan compatible to Transactions. (#​2364) by @​antonpirker
- Cleanup ASGI integration (#​2335) by @​antonpirker
- Pin anyio in tests (dep of httpx), because new major 4.0.0 breaks tests. (#​2336) by @​antonpirker
- Added link to backpressure section in docs. (#​2354) by @​antonpirker
- Add .vscode to .gitignore (#​2317) by @​shoaib-mohd
- Documenting Spans and Transactions (#​2358) by @​antonpirker
- Fix in profiler: do not call getcwd from module root (#​2329) by @​Zylphrex
- Fix deprecated version attribute (#​2338) by @​vagi8
- Fix transaction name in Starlette and FastAPI (#​2341) by @​antonpirker
- Fix tests using Postgres (#​2362) by @​antonpirker
- build(deps): Updated linting tooling (#​2350) by @​antonpirker
- build(deps): bump sphinx from 7.2.4 to 7.2.5 (#​2344) by @​dependabot
- build(deps): bump actions/checkout from 2 to 4 (#​2352) by @​dependabot
- build(deps): bump checkouts/data-schemas from `ebc77d3` to `68def1e` (#​2351) by @​dependabot
v1.30.0
Various fixes & improvements
-
Officially support Python 3.11 (#2300) by @sentrivana
-
Context manager monitor (#2290) by @szokeasaurusrex
-
Set response status code in transaction
response
context. (#2312) by @antonpirker -
Add missing context kwarg to
_sentry_task_factory
(#2267) by @JohnnyDeuss -
In Postgres take the connection params from the connection (#2308) by @antonpirker
-
Experimental: Allow using OTel for performance instrumentation (#2272) by @sentrivana
This release includes experimental support for replacing Sentry's default performance monitoring solution with one powered by OpenTelemetry without having to do any manual setup.
Try it out by installing
pip install sentry-sdk[opentelemetry-experimental]
and then initializing the SDK with:sentry_sdk.init(
...your usual options...
_experiments={"otel_powered_performance": True},
)
```
This enables OpenTelemetry performance monitoring support for some of the most
popular frameworks and libraries (Flask, Django, FastAPI, requests...).
We're looking forward to your feedback! Please let us know about your experience
in this discussion: https://github.com/getsentry/sentry/discussions/55023
**Important note:** Please note that this feature is experimental and in a
proof-of-concept stage and is not meant for production use. It may be changed or
removed at any point.
-
Enable backpressure handling by default (#2298) by @sl0thentr0py
The SDK now dynamically downsamples transactions to reduce backpressure in high throughput systems. It starts a new
Monitor
thread to perform some health checks which decide to downsample (halved each time) in 10 second intervals till the system is healthy again.To disable this behavior, use:
sentry_sdk.init(
...your usual options...
enable_backpressure_handling=False,
)
```
If your system serves heavy load, please let us know how this feature works for you!
Check out the [documentation](https://docs.sentry.io/platforms/python/configuration/options/#enable-backpressure-handling) for more information.
- Stop recording spans for internal web requests to Sentry (#2297) by @szokeasaurusrex
- Add test for
ThreadPoolExecutor
(#2259) by @gggritso - Add docstrings for
Scope.update_from_*
(#2311) by @sentrivana - Moved
is_sentry_url
to utils (#2304) by @szokeasaurusrex - Fix: arq attribute error on settings, support worker args (#2260) by @rossmacarthur
- Fix: Exceptions include detail property for their value (#2193) by @nicolassanmar
- build(deps): bump mypy from 1.4.1 to 1.5.1 (#2319) by @dependabot
- build(deps): bump sphinx from 7.1.2 to 7.2.4 (#2322) by @dependabot
- build(deps): bump sphinx from 7.0.1 to 7.1.2 (#2296) by @dependabot
- build(deps): bump checkouts/data-schemas from
1b85152
toebc77d3
(#2254) by @dependabot
v1.29.2
Various fixes & improvements
- Revert GraphQL integration (#2287) by @sentrivana
v1.29.1
Various fixes & improvements
- Fix GraphQL integration swallowing responses (#2286) by @sentrivana
- Fix typo (#2283) by @sentrivana
v1.29.0
Various fixes & improvements
- Capture GraphQL client errors (#2243) by @sentrivana
- The SDK will now create dedicated errors whenever an HTTP client makes a request to a
/graphql
endpoint and the response contains an error. You can opt out of this by providingcapture_graphql_errors=False
to the HTTP client integration.
- The SDK will now create dedicated errors whenever an HTTP client makes a request to a
- Read MAX_VALUE_LENGTH from client options (#2121) (#2171) by @puittenbroek
- Rename
request_bodies
tomax_request_body_size
(#2247) by @mgaligniana - Always sample checkin regardless of
sample_rate
(#2279) by @szokeasaurusrex - Add information to short-interval cron error message (#2246) by @lobsterkatie
- Add DB connection attributes in spans (#2274) by @antonpirker
- Add
db.system
to remaining Redis spans (#2271) by @AbhiPrasad - Clarified the procedure for running tests (#2276) by @szokeasaurusrex
- Fix Chalice tests (#2278) by @sentrivana
- Bump Black from 23.3.0 to 23.7.0 (#2256) by @dependabot
- Remove py3.4 from tox.ini (#2248) by @sentrivana
v1.28.1
Various fixes & improvements
- Redis: Add support for redis.asyncio (#1933) by @Zhenay
- Make sure each task that is started by Celery Beat has its own trace. (#2249) by @antonpirker
- Add Sampling Decision to Trace Envelope Header (#2239) by @antonpirker
- Do not add trace headers (
sentry-trace
andbaggage
) to HTTP requests to Sentry (#2240) by @antonpirker - Prevent adding
sentry-trace
header multiple times (#2235) by @antonpirker - Skip distributions with incomplete metadata (#2231) by @rominf
- Remove stale.yml (#2245) by @hubertdeng123
- Django: Fix 404 Handler handler being labeled as "generic ASGI request" (#1277) by @BeryJu
v1.28.0
Various fixes & improvements
- Add support for cron jobs in ARQ integration (#2088) by @lewazo
- Backpressure handling prototype (#2189) by @sl0thentr0py
- Add "replay" context to event payload (#2234) by @antonpirker
- Update test Django app to be compatible for Django 4.x (#1794) by @DilLip-Chowdary-Codes
v1.27.1
Various fixes & improvements
- Add Starlette/FastAPI template tag for adding Sentry tracing information (#2225) by @antonpirker
- By adding
{{ sentry_trace_meta }}
to your Starlette/FastAPI Jinja2 templates we will include Sentry trace information as a meta tag in the rendered HTML to allow your frontend to pick up and continue the trace started in the backend.
- By adding
- Fixed generation of baggage when a DSC is already in propagation context (#2232) by @antonpirker
- Handle explicitly passing
None
fortrace_configs
inaiohttp
(#2230) by @Harmon758 - Support newest Starlette versions (#2227) by @antonpirker
v1.27.0
Various fixes & improvements
-
Support for SQLAlchemy 2.0 (#2200) by @antonpirker
-
Add instrumentation of
aiohttp
client requests (#1761) by @md384 -
Add Django template tag for adding Sentry tracing information (#2222) by @antonpirker
- By adding
{{ sentry_trace_meta }}
to your Django templates we will include Sentry trace information as a meta tag in the rendered HTML to allow your frontend to pick up and continue the trace started in the backend.
- By adding
-
Update Flask HTML meta helper (#2203) by @antonpirker
-
Take trace ID always from propagation context (#2209) by @antonpirker
-
Fix trace context in event payload (#2205) by @antonpirker
-
Use new top level API in
trace_propagation_meta
(#2202) by @antonpirker -
Do not overwrite existing baggage on outgoing requests (#2191, #2214) by @sentrivana
-
Set the transaction/span status from an OTel span (#2115) by @daniil-konovalenko
-
Fix propagation of OTel
NonRecordingSpan
(#2187) by @hartungstenio -
Fix
TaskLockedException
handling in Huey integration (#2206) by @Zhenay -
Add message format configuration arguments to Loguru integration (#2208) by @Gwill
-
Profiling: Add client reports for profiles (#2207) by @Zylphrex
-
CI: Fix CI (#2220) by @antonpirker
-
Dependencies: Bump
checkouts/data-schemas
from7fdde87
to1b85152
(#2218) by @dependabot -
Dependencies: Bump
mypy
from 1.3.0 to 1.4.1 (#2194) by @dependabot -
Docs: Change API doc theme (#2210) by @sentrivana
-
Docs: Allow (some) autocompletion for top-level API (#2213) by @sentrivana
-
Docs: Revert autocomplete hack (#2224) by @sentrivana
v1.26.0
Various fixes & improvements
- Tracing without performance (#2136) by @antonpirker
- Load tracing information from environment (#2176) by @antonpirker
- Auto-enable HTTPX integration if HTTPX installed (#2177) by @sentrivana
- Support for SOCKS proxies (#1050) by @Roguelazer
- Wrap
parse_url
calls incapture_internal_exceptions
(#2162) by @sentrivana - Run 2.7 tests in CI again (#2181) by @sentrivana
- Crons: Do not support sub-minute cron intervals (#2172) by @antonpirker
- Profile: Add function name to profiler frame cache (#2164) by @Zylphrex
- Dependencies: bump checkouts/data-schemas from
0ed3357
to7fdde87
(#2165) by @dependabot - Update changelog (#2163) by @sentrivana
v1.25.1
Django update (ongoing)
Collections of improvements to our Django integration.
By: @mgaligniana (#1773)
Various fixes & improvements
-
Fix
parse_url
(#2161) by @sentrivana and @antonpirkerOur URL sanitization used in multiple integrations broke with the recent Python security update. If you started seeing
ValueError
s with"'Filtered' does not appear to be an IPv4 or IPv6 address"
, this release fixes that. See the original issue for more context. -
Better version parsing in integrations (#2152) by @antonpirker
We now properly support all integration versions that conform to PEP 440. This replaces our naïve version parsing that wouldn't accept versions such as
2.0.0rc1
or2.0.5.post1
. -
Align HTTP status code as span data field
http.response.status_code
(#2113) by @antonpirker -
Do not encode cached value to determine size (#2143) by @sentrivana
-
Fix using
unittest.mock
whenever available (#1926) by @mgorny -
Fix 2.7
common
tests (#2145) by @sentrivana -
Bump
actions/stale
from6
to8
(#1978) by @dependabot -
Bump
black
from22.12.0
to23.3.0
(#1984) by @dependabot -
Bump
mypy
from1.2.0
to1.3.0
(#2110) by @dependabot -
Bump
sphinx
from5.3.0
to7.0.1
(#2112) by @dependabot
v1.25.0
Various fixes & improvements
-
Support urllib3>=2.0.0 (#2148) by @asottile-sentry
We're now supporting urllib3's new major version, 2.0.0. If you encounter issues (e.g. some of your dependencies not supporting the new urllib3 version yet) you might consider pinning the urllib3 version to
<2.0.0
manually in your project. Check out the the urllib3 migration guide for details. -
Auto-retry tests on failure (#2134) by @sentrivana
-
Correct
importlib.metadata
check intest_modules
(#2149) by @asottile-sentry -
Fix distribution name normalization (PEP-0503) (#2144) by @rominf
-
Fix
functions_to_trace
typing (#2141) by @rcmarron
v1.24.0
Various fixes & improvements
-
New: Celery Beat exclude tasks option (#2130) by @antonpirker
You can exclude Celery Beat tasks from being auto-instrumented. To do this, add a list of tasks you want to exclude as option
exclude_beat_tasks
when creatingCeleryIntegration
. The list can contain simple strings with the full task name, as specified in the Celery Beat schedule, or regular expressions to match multiple tasks.For more information, see the documentation for Crons for more information.
Usage:
exclude_beat_tasks = [ "some-task-a", "payment-check-.*", ] sentry_sdk.init( dsn='___PUBLIC_DSN___', integrations=[ CeleryIntegration( monitor_beat_tasks=True, exclude_beat_tasks=exclude_beat_tasks, ), ], )
In this example the task
some-task-a
and all tasks with a name starting withpayment-check-
will be ignored. -
New: Add support for ExceptionGroups (#2025) by @antonpirker
Note: If running Self-Hosted Sentry, you should wait to adopt this SDK update until after updating to the 23.6.0 (est. June 2023) release of Sentry. Updating early will not break anything, but you will not get the full benefit of the Exception Groups improvements to issue grouping that were added to the Sentry backend.
-
Prefer
importlib.metadata
overpkg_resources
if available (#2081) by @sentrivana -
Work with a copy of request, vars in the event (#2125) by @sentrivana
-
Pinned version of dependency that broke the build (#2133) by @antonpirker
v1.23.1
Various fixes & improvements
- Disable Django Cache spans by default. (#2120) by @antonpirker
v1.23.0
Various fixes & improvements
-
New: Add
loguru
integration (#1994) by @PerchunPakCheck the documentation for more information.
Usage:
from loguru import logger import sentry_sdk from sentry_sdk.integrations.loguru import LoguruIntegration sentry_sdk.init( dsn="___PUBLIC_DSN___", integrations=[ LoguruIntegration(), ], ) logger.debug("I am ignored") logger.info("I am a breadcrumb") logger.error("I am an event", extra=dict(bar=43)) logger.exception("An exception happened")
- An error event with the message
"I am an event"
will be created. -
"I am a breadcrumb"
will be attached as a breadcrumb to that event. -
bar
will end up in theextra
attributes of that event. -
"An exception happened"
will send the current exception fromsys.exc_info()
with the stack trace to Sentry. If there's no exception, the current stack will be attached. - The debug message
"I am ignored"
will not be captured by Sentry. To capture it, setlevel
toDEBUG
or lower inLoguruIntegration
.
- An error event with the message
-
Do not truncate request body if
request_bodies
is"always"
(#2092) by @sentrivana -
Fixed Celery headers for Beat auto-instrumentation (#2102) by @antonpirker
-
Add
db.operation
to Redis and MongoDB spans (#2089) by @antonpirker -
Make sure we're importing
redis
the library (#2106) by @sentrivana -
Add
include_source_context
option (#2020) by @farhat-nawaz and @sentrivana -
Import
Markup
frommarkupsafe
(#2047) by @rco-ableton -
Fix
__qualname__
missing attribute in asyncio integration (#2105) by @sl0thentr0py -
Remove relay extension from AWS Layer (#2068) by @sl0thentr0py
-
Add a note about
pip freeze
to the bug template (#2103) by @sentrivana
v1.22.2
Various fixes & improvements
- Fix: Django caching spans when using keyword arguments (#2086) by @antonpirker
- Fix: Duration in Celery Beat tasks monitoring (#2087) by @antonpirker
- Fix: Docstrings of SPANDATA (#2084) by @antonpirker
v1.22.1
Various fixes & improvements
- Fix: Handle a list of keys (not just a single key) in Django cache spans (#2082) by @antonpirker
v1.22.0
Various fixes & improvements
-
Add
cache.hit
andcache.item_size
to Django (#2057) by @antonpirkerNote: This will add spans for all requests to the caches configured in Django. This will probably add some overhead to your server an also add multiple spans to your performance waterfall diagrams. If you do not want this, you can disable this feature in the DjangoIntegration:
sentry_sdk.init( dsn="...", integrations=[ DjangoIntegration(cache_spans=False), ] )
-
Use
http.method
instead ofmethod
(#2054) by @AbhiPrasad -
Handle non-int
exc.status_code
in Starlette (#2075) by @sentrivana -
Handle SQLAlchemy
engine.name
being bytes (#2074) by @sentrivana -
Fix
KeyError
incapture_checkin
if SDK is not initialized (#2073) by @antonpirker -
Use
functools.wrap
forThreadingIntegration
patches to fix attributes (#2080) by @EpicWink -
Pin
urllib3
to <2.0.0 for now (#2069) by @sl0thentr0py
v1.21.1
Various fixes & improvements
- Do not send monitor_config when unset (#2058) by @evanpurkhiser
- Add
db.system
span data (#2040, #2042) by @antonpirker - Fix memory leak in profiling (#2049) by @Zylphrex
- Fix crash loop when returning none in before_send (#2045) by @sentrivana
v1.21.0
Various fixes & improvements
-
Better handling of redis span/breadcrumb data (#2033) by @antonpirker
Note: With this release we will limit the description of redis db spans and the data in breadcrumbs represting redis db operations to 1024 characters.
This can can lead to truncated data. If you do not want this there is a new parameter
max_data_size
inRedisIntegration
. You can set this toNone
for disabling trimming.Example for disabling trimming of redis commands in spans or breadcrumbs:
sentry_sdk.init( integrations=[ RedisIntegration(max_data_size=None), ] )
Example for custom trim size of redis commands in spans or breadcrumbs:
sentry_sdk.init( integrations=[ RedisIntegration(max_data_size=50), ] )`
-
Add
db.system
to redis and SQLAlchemy db spans (#2037, #2038, #2039) (#2037) by @AbhiPrasad -
Upgraded linting tooling (#2026) by @antonpirker
-
Made code more resilient. (#2031) by @antonpirker
v1.20.0
Various fixes & improvements
-
Send all events to /envelope endpoint when tracing is enabled (#2009) by @antonpirker
Note: If you’re self-hosting Sentry 9, you need to stay in the previous version of the SDK or update your self-hosted to at least 20.6.0
-
Profiling: Remove profile context from SDK (#2013) by @Zylphrex
-
Profiling: Additionl performance improvements to the profiler (#1991) by @Zylphrex
-
Fix: Celery Beat monitoring without restarting the Beat process (#2001) by @antonpirker
-
Fix: Using the Codecov uploader instead of deprecated python package (#2011) by @antonpirker
-
Fix: Support for Quart (#2003)` (#2003) by @antonpirker
v1.19.1
Various fixes & improvements
- Make auto monitoring beat update support Celery 4 and 5 (#1989) by @antonpirker
v1.19.0
Various fixes & improvements
-
New: Celery Beat auto monitoring (#1967) by @antonpirker
The CeleryIntegration can now also monitor your Celery Beat scheduled tasks automatically using the new Crons feature of Sentry.
To learn more see our Celery Beat Auto Discovery documentation.
Usage:
from celery import Celery, signals from celery.schedules import crontab import sentry_sdk from sentry_sdk.integrations.celery import CeleryIntegration app = Celery('tasks', broker='...') app.conf.beat_schedule = { 'set-in-beat-schedule': { 'task': 'tasks.some_important_task', 'schedule': crontab(...), }, } @​signals.celeryd_init.connect def init_sentry(**kwargs): sentry_sdk.init( dsn='...', integrations=[CeleryIntegration(monitor_beat_tasks=True)], # 👈 here environment="local.dev.grace", release="v1.0", )
This will auto detect all schedules tasks in your
beat_schedule
and will monitor them with Sentry Crons. -
New: gRPC integration (#1911) by @hossein-raeisi
The gRPC integration instruments all incoming requests and outgoing unary-unary, unary-stream grpc requests using grpcio channels.
To learn more see our gRPC Integration documentation.
On the server:
import grpc from sentry_sdk.integrations.grpc.server import ServerInterceptor server = grpc.server( thread_pool=..., interceptors=[ServerInterceptor()], )
On the client:
import grpc from sentry_sdk.integrations.grpc.client import ClientInterceptor with grpc.insecure_channel("example.com:12345") as channel: channel = grpc.intercept_channel(channel, *[ClientInterceptor()])
-
New: socket integration (#1911) by @hossein-raeisi
Use this integration to create spans for DNS resolves (
socket.getaddrinfo()
) and connection creations (socket.create_connection()
).To learn more see our Socket Integration documentation.
Usage:
import sentry_sdk from sentry_sdk.integrations.socket import SocketIntegration sentry_sdk.init( dsn="___PUBLIC_DSN___", integrations=[ SocketIntegration(), ], )
-
Fix: Do not trim span descriptions. (#1983) by @antonpirker
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.