Skip to content

Automatic propagation of scope with gevent and gunicorn #1028

Description

@lucas03

Environment

Which SDK and version?
sentry-sdk==0.20.2
gevent==21.1.2
gunicorn==20.0.4

Steps to Reproduce

I have this code:

from gevent import monkey
monkey.patch_all()

import os
import bottle
import gevent
import sentry_sdk
from sentry_sdk.integrations.threading import ThreadingIntegration

sentry_kwargs = {
    "environment": "sentry-test",
    "ignore_errors": ["greenlet.GreenletExit"],
    "dsn": os.environ["SENTRY_DSN"],
    "integrations": [ThreadingIntegration(propagate_hub=True)]
}
sentry_sdk.init(**sentry_kwargs)


@bottle.route('/request')
def request():
    with sentry_sdk.configure_scope() as scope:
        scope.set_tag("url", bottle.request.path)
        print(sentry_sdk.Hub.current.scope)
        print(sentry_sdk.Hub.current.scope._tags)
        gevent.spawn(_request_call)
        return {}


def _request_call():
    print(sentry_sdk.Hub.current.scope)
    print(sentry_sdk.Hub.current.scope._tags)

Expected Result

I would expect ThreadingIntegration(propagate_hub=True) would propagate scope to gevent, but it seems it's not the case.

Actual Result

<Scope id=0x111b31438 name=bottle>
{'url': '/request'}
<Scope id=0x1117296d8 name=None>
{}

Metadata

Metadata

Assignees

No one assigned

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions