Releases: getsentry/sentry-python
1.16.0
Various fixes & improvements
-
New: Add arq Integration (#1872) by @Zhenay
This integration will create performance spans when arq jobs will be enqueued and when they will be run.
It will also capture errors in jobs and will link them to the performance spans.Usage:
import asyncio from httpx import AsyncClient from arq import create_pool from arq.connections import RedisSettings import sentry_sdk from sentry_sdk.integrations.arq import ArqIntegration from sentry_sdk.tracing import TRANSACTION_SOURCE_COMPONENT sentry_sdk.init( dsn="...", integrations=[ArqIntegration()], ) async def download_content(ctx, url): session: AsyncClient = ctx['session'] response = await session.get(url) print(f'{url}: {response.text:.80}...') return len(response.text) async def startup(ctx): ctx['session'] = AsyncClient() async def shutdown(ctx): await ctx['session'].aclose() async def main(): with sentry_sdk.start_transaction(name="testing_arq_tasks", source=TRANSACTION_SOURCE_COMPONENT): redis = await create_pool(RedisSettings()) for url in ('https://facebook.com', 'https://microsoft.com', 'https://github.com', "asdf" ): await redis.enqueue_job('download_content', url) class WorkerSettings: functions = [download_content] on_startup = startup on_shutdown = shutdown if __name__ == '__main__': asyncio.run(main())
-
Update of Falcon Integration (#1733) by @bartolootrit
-
Adding Cloud Resource Context integration (#1882) by @antonpirker
-
Profiling: Use the transaction timestamps to anchor the profile (#1898) by @Zylphrex
-
Profiling: Start profiler thread lazily (#1903) by @Zylphrex
-
Fixed checks for structured http data (#1905) by @antonpirker
-
Make
set_measurementpublic api and remove experimental status (#1909) by @sl0thentr0py -
Add
trace_propagation_targetsoption (#1916) by @antonpirker -
Add
enable_tracingto default traces_sample_rate to 1.0 (#1900) by @sl0thentr0py -
Remove deprecated
tracestate(#1907) by @sl0thentr0py -
Sanitize URLs in Span description and breadcrumbs (#1876) by @antonpirker
-
Mechanism should default to true unless set explicitly (#1889) by @sl0thentr0py
-
Better setting of in-app in stack frames (#1894) by @antonpirker
-
Updated outdated HTTPX test matrix (#1917) by @antonpirker
1.15.0
Various fixes & improvements
-
New: Add Huey Integration (#1555) by @Zhenay
This integration will create performance spans when Huey tasks will be enqueued and when they will be executed.
Usage:
Task definition in
demo.py:import time from huey import SqliteHuey, crontab import sentry_sdk from sentry_sdk.integrations.huey import HueyIntegration sentry_sdk.init( dsn="...", integrations=[ HueyIntegration(), ], traces_sample_rate=1.0, ) huey = SqliteHuey(filename='/tmp/demo.db') @huey.task() def add_numbers(a, b): return a + b
Running the tasks in
run.py:from demo import add_numbers, flaky_task, nightly_backup import sentry_sdk from sentry_sdk.integrations.huey import HueyIntegration from sentry_sdk.tracing import TRANSACTION_SOURCE_COMPONENT, Transaction def main(): sentry_sdk.init( dsn="...", integrations=[ HueyIntegration(), ], traces_sample_rate=1.0, ) with sentry_sdk.start_transaction(name="testing_huey_tasks", source=TRANSACTION_SOURCE_COMPONENT): r = add_numbers(1, 2) if __name__ == "__main__": main()
-
Profiling: Do not send single sample profiles (#1879) by @Zylphrex
-
Profiling: Add additional test coverage for profiler (#1877) by @Zylphrex
-
Profiling: Always use builtin time.sleep (#1869) by @Zylphrex
-
Profiling: Defaul in_app decision to None (#1855) by @Zylphrex
-
Profiling: Remove use of threading.Event (#1864) by @Zylphrex
-
Profiling: Enable profiling on all transactions (#1797) by @Zylphrex
-
FastAPI: Fix check for Starlette in FastAPI integration (#1868) by @antonpirker
-
Flask: Do not overwrite default for username with email address in FlaskIntegration (#1873) by @homeworkprod
-
Fix: Don't log whole event in before_send / event_processor drops (#1863) by @sl0thentr0py
1.14.0
Various fixes & improvements
-
Add
before_send_transaction(#1840) by @antonpirkerAdds a hook (similar to
before_send) that is called for all transaction events (performance releated data).Usage:
import sentry_sdk def strip_sensitive_data(event, hint): # modify event here (or return `None` if you want to drop the event entirely) return event sentry_sdk.init( # ... before_send_transaction=strip_sensitive_data, )
-
Django: Always remove values of Django session related cookies. (#1842) by @antonpirker
-
Profiling: Enable profiling for ASGI frameworks (#1824) by @Zylphrex
-
Profiling: Add profile context to transaction (#1860) by @Zylphrex
-
Profiling: Use co_qualname in python 3.11 (#1831) by @Zylphrex
-
OpenTelemetry: fix Use dict for sentry-trace context instead of tuple (#1847) by @AbhiPrasad
-
OpenTelemetry: fix extra dependency (#1825) by @bernardotorres
-
OpenTelemetry: fix NoOpSpan updates scope (#1834) by @Zylphrex
-
OpenTelemetry: Make sure to noop when there is no DSN (#1852) by @antonpirker
-
FastAPI: Fix middleware being patched multiple times (#1841) by @JohnnyDeuss
-
Starlette: Avoid import of pkg_resource with Starlette integration (#1836) by @mgu
-
Removed code coverage target (#1862) by @antonpirker
1.13.0
Various fixes & improvements
-
Add Starlite integration (#1748) by @gazorby
Adding support for the Starlite framework. Unhandled errors are captured. Performance spans for Starlite middleware are also captured. Thanks @gazorby for the great work!
Usage:
from starlite import Starlite, get import sentry_sdk from sentry_sdk.integrations.starlite import StarliteIntegration sentry_sdk.init( dsn="...", traces_sample_rate=1.0, integrations=[ StarliteIntegration(), ], ) @get("/") def hello_world() -> dict[str, str]: """Keeping the tradition alive with hello world.""" bla = 1/0 # causing an error return {"hello": "world"} app = Starlite(route_handlers=[hello_world])
-
Profiling: Remove sample buffer from profiler (#1791) by @Zylphrex
-
Profiling: Performance tweaks to profile sampler (#1789) by @Zylphrex
-
Add span for Django SimpleTemplateResponse rendering (#1818) by @chdsbd
-
Add enqueued_at and started_at to rq job extra (#1024) by @kruvasyan
-
Remove sanic v22 pin (#1819) by @sl0thentr0py
-
Add support for
byterrayandmemoryviewbuilt-in types (#1833) by @Tarty -
Handle
"rc"in SQLAlchemy version. (#1812) by @peterschutt -
Doc: Use .venv (not .env) as a virtual env location in CONTRIBUTING.md (#1790) by @tonyo
-
Auto publish to internal pypi on release (#1823) by @asottile-sentry
-
Added Python 3.11 to test suite (#1795) by @antonpirker
-
Update test/linting dependencies (#1801) by @antonpirker
-
Deps: bump sphinx from 5.2.3 to 5.3.0 (#1686) by @dependabot
1.12.1
Various fixes & improvements
- Link errors to OTel spans (#1787) by @antonpirker
1.12.0
Basic OTel support
This adds support to automatically integrate OpenTelemetry performance tracing with Sentry.
See the documentation on how to set it up:
https://docs.sentry.io/platforms/python/performance/instrumentation/opentelemetry/
Give it a try and let us know if you have any feedback or problems with using it.
By: @antonpirker (#1772, #1766, #1765)
Various fixes & improvements
1.11.1
Various fixes & improvements
- Move set_transaction_name out of event processor in fastapi/starlette (#1751) by @sl0thentr0py
- Expose proxy_headers as top level config and use in ProxyManager: https://docs.sentry.io/platforms/python/configuration/options/#proxy-headers (#1746) by @sl0thentr0py
1.11.0
Various fixes & improvements
-
NEW: Support for MongoDB (#1590) by @Agalin
Queries to MongoDB are now instrumented!
See https://docs.sentry.io/platforms/python/guides/pymongo/ for more information.
-
Profiling: Do not error if already setup (#1731) by @Zylphrex
-
Profiling: Use sleep scheduler by default (#1729) by @Zylphrex
-
Profiling: Tune the sample profile generation code for performance (#1694) by @Zylphrex
-
Fix: Reading FastAPI request body twice. (#1724) by @antonpirker
-
Fix: Django signals problem on sentry.io (#1732) by @antonpirker
-
Fix: Performance optimizations for Django signals (#1725) by @antonpirker
-
Fix: Move relay to port 5333 to avoid collisions (#1716) by @sl0thentr0py
-
Fix: strip_string() checks text length counting bytes not chars (#1711) by @mgaligniana
-
Chore: remove jira workflow (#1707) by @vladanpaunovic
-
Update actions/upload-artifact to v3.1.1 (#1718) by @mattgauntseo-sentry
-
Update checkouts/data-schemas from
a214fbcto20ff3b9(#1703) by @dependabot
1.10.1
Various fixes & improvements
- Bug fixes for FastAPI and Sentry SDK 1.10.0 (#1699) by @antonpirker
- The wrapped receive() did not return anything. (#1698) by @antonpirker
1.10.0
Various fixes & improvements
-
Unified naming for span ops (#1661) by @antonpirker
We have unified the strings of our span operations. See https://develop.sentry.dev/sdk/performance/span-operations/
WARNING: If you have Sentry Dashboards or Sentry Discover queries that use
transaction.opin their fields, conditions, aggregates or columns this change could potentially break your Dashboards/Discover setup.
Here is a list of the changes we made to theops. Please adjust your dashboards and Discover queries accordingly:Old operation ( op)New Operation ( op)asgi.serverhttp.serveraws.requesthttp.clientaws.request.streamhttp.client.streamcelery.submitqueue.submit.celerycelery.taskqueue.task.celerydjango.middlewaremiddleware.djangodjango.signalsevent.djangodjango.template.rendertemplate.renderdjango.viewview.renderhttphttp.clientredisdb.redisrq.taskqueue.task.rqserverless.functionfunction.awsserverless.functionfunction.gcpstarlette.middlewaremiddleware.starlette -
Include framework in SDK name (#1662) by @antonpirker
-
Asyncio integration (#1671) by @antonpirker
-
Add exception handling to Asyncio Integration (#1695) by @antonpirker
-
Fix asyncio task factory (#1689) by @antonpirker
-
Have instrumentation for ASGI middleware receive/send callbacks. (#1673) by @antonpirker
-
Use Django internal ASGI handling from Channels version 4.0.0. (#1688) by @antonpirker
-
fix(integrations): Fix http putrequest when url is None (#1693) by @MattFlower
-
build(deps): bump checkouts/data-schemas from
f0a57f2toa214fbc(#1627) by @dependabot -
build(deps): bump flake8-bugbear from 22.9.11 to 22.9.23 (#1637) by @dependabot
-
build(deps): bump sphinx from 5.1.1 to 5.2.3 (#1653) by @dependabot
-
build(deps): bump actions/stale from 5 to 6 (#1638) by @dependabot
-
build(deps): bump black from 22.8.0 to 22.10.0 (#1670) by @dependabot
-
Remove unused node setup from ci. (#1681) by @antonpirker
-
Check for Decimal is in_valid_sample_rate (#1672) by @Arvind2222
-
Add session for aiohttp integration (#1605) by @denys-pidlisnyi
-
feat(profiling): Extract qualified name for each frame (#1669) by @Zylphrex
-
feat(profiling): Attach thread metadata to profiles (#1660) by @Zylphrex
-
ref(profiling): Rename profiling frame keys (#1680) by @Zylphrex
-
fix(profiling): get_frame_name only look at arguments (#1684) by @Zylphrex
-
fix(profiling): Need to sample profile correctly (#1679) by @Zylphrex
-
fix(profiling): Race condition spawning multiple profiling threads (#1676) by @Zylphrex
-
tests(profiling): Add basic profiling tests (#1677) by @Zylphrex
-
tests(profiling): Add tests for thread schedulers (#1683) by @Zylphrex