$64 GRAYBYTE WORDPRESS FILE MANAGER $57

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/python37/lib/python3.7/site-packages/sentry_sdk/integrations/

HOME
Current File : /opt/alt/python37/lib/python3.7/site-packages/sentry_sdk/integrations//sqlalchemy.py
from __future__ import absolute_import

from sentry_sdk._types import MYPY
from sentry_sdk.hub import Hub
from sentry_sdk.integrations import Integration, DidNotEnable
from sentry_sdk.tracing import record_sql_queries

try:
    from sqlalchemy.engine import Engine  # type: ignore
    from sqlalchemy.event import listen  # type: ignore
    from sqlalchemy import __version__ as SQLALCHEMY_VERSION  # type: ignore
except ImportError:
    raise DidNotEnable("SQLAlchemy not installed.")

if MYPY:
    from typing import Any
    from typing import ContextManager
    from typing import Optional

    from sentry_sdk.tracing import Span


class SqlalchemyIntegration(Integration):
    identifier = "sqlalchemy"

    @staticmethod
    def setup_once():
        # type: () -> None

        try:
            version = tuple(map(int, SQLALCHEMY_VERSION.split("b")[0].split(".")))
        except (TypeError, ValueError):
            raise DidNotEnable(
                "Unparsable SQLAlchemy version: {}".format(SQLALCHEMY_VERSION)
            )

        if version < (1, 2):
            raise DidNotEnable("SQLAlchemy 1.2 or newer required.")

        listen(Engine, "before_cursor_execute", _before_cursor_execute)
        listen(Engine, "after_cursor_execute", _after_cursor_execute)
        listen(Engine, "handle_error", _handle_error)


def _before_cursor_execute(
    conn, cursor, statement, parameters, context, executemany, *args
):
    # type: (Any, Any, Any, Any, Any, bool, *Any) -> None
    hub = Hub.current
    if hub.get_integration(SqlalchemyIntegration) is None:
        return

    ctx_mgr = record_sql_queries(
        hub,
        cursor,
        statement,
        parameters,
        paramstyle=context and context.dialect and context.dialect.paramstyle or None,
        executemany=executemany,
    )
    conn._sentry_sql_span_manager = ctx_mgr

    span = ctx_mgr.__enter__()

    if span is not None:
        conn._sentry_sql_span = span


def _after_cursor_execute(conn, cursor, statement, *args):
    # type: (Any, Any, Any, *Any) -> None
    ctx_mgr = getattr(
        conn, "_sentry_sql_span_manager", None
    )  # type: ContextManager[Any]

    if ctx_mgr is not None:
        conn._sentry_sql_span_manager = None
        ctx_mgr.__exit__(None, None, None)


def _handle_error(context, *args):
    # type: (Any, *Any) -> None
    conn = context.connection
    span = getattr(conn, "_sentry_sql_span", None)  # type: Optional[Span]

    if span is not None:
        span.set_status("internal_error")

    # _after_cursor_execute does not get called for crashing SQL stmts. Judging
    # from SQLAlchemy codebase it does seem like any error coming into this
    # handler is going to be fatal.
    ctx_mgr = getattr(
        conn, "_sentry_sql_span_manager", None
    )  # type: ContextManager[Any]

    if ctx_mgr is not None:
        conn._sentry_sql_span_manager = None
        ctx_mgr.__exit__(None, None, None)

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
31 Aug 2024 6.48 AM
root / 996
0755
__pycache__
--
31 Aug 2024 6.48 AM
root / 996
0755
django
--
31 Aug 2024 6.48 AM
root / 996
0755
spark
--
31 Aug 2024 6.48 AM
root / 996
0755
__init__.py
6.356 KB
27 Jul 2021 9.04 PM
root / 996
0644
_wsgi_common.py
4.651 KB
27 Jul 2021 9.04 PM
root / 996
0644
aiohttp.py
7.766 KB
27 Jul 2021 9.04 PM
root / 996
0644
argv.py
0.923 KB
27 Jul 2021 9.04 PM
root / 996
0644
asgi.py
8.257 KB
27 Jul 2021 9.04 PM
root / 996
0644
atexit.py
1.794 KB
27 Jul 2021 9.04 PM
root / 996
0644
aws_lambda.py
14.987 KB
27 Jul 2021 9.04 PM
root / 996
0644
beam.py
5.529 KB
27 Jul 2021 9.04 PM
root / 996
0644
boto3.py
4.048 KB
27 Jul 2021 9.04 PM
root / 996
0644
bottle.py
6.062 KB
27 Jul 2021 9.04 PM
root / 996
0644
celery.py
9.312 KB
27 Jul 2021 9.04 PM
root / 996
0644
chalice.py
4.502 KB
27 Jul 2021 9.04 PM
root / 996
0644
dedupe.py
1.139 KB
27 Jul 2021 9.04 PM
root / 996
0644
excepthook.py
2.139 KB
27 Jul 2021 9.04 PM
root / 996
0644
executing.py
1.976 KB
27 Jul 2021 9.04 PM
root / 996
0644
falcon.py
6.637 KB
27 Jul 2021 9.04 PM
root / 996
0644
flask.py
7.296 KB
27 Jul 2021 9.04 PM
root / 996
0644
gcp.py
7.842 KB
27 Jul 2021 9.04 PM
root / 996
0644
gnu_backtrace.py
2.844 KB
27 Jul 2021 9.04 PM
root / 996
0644
httpx.py
2.552 KB
27 Jul 2021 9.04 PM
root / 996
0644
logging.py
7.543 KB
27 Jul 2021 9.04 PM
root / 996
0644
modules.py
1.36 KB
27 Jul 2021 9.04 PM
root / 996
0644
pure_eval.py
4.414 KB
27 Jul 2021 9.04 PM
root / 996
0644
pyramid.py
6.906 KB
27 Jul 2021 9.04 PM
root / 996
0644
redis.py
3.004 KB
27 Jul 2021 9.04 PM
root / 996
0644
rq.py
4.838 KB
27 Jul 2021 9.04 PM
root / 996
0644
sanic.py
8.444 KB
27 Jul 2021 9.04 PM
root / 996
0644
serverless.py
1.925 KB
27 Jul 2021 9.04 PM
root / 996
0644
sqlalchemy.py
2.87 KB
27 Jul 2021 9.04 PM
root / 996
0644
stdlib.py
7.245 KB
27 Jul 2021 9.04 PM
root / 996
0644
threading.py
2.789 KB
27 Jul 2021 9.04 PM
root / 996
0644
tornado.py
7.018 KB
27 Jul 2021 9.04 PM
root / 996
0644
trytond.py
1.688 KB
27 Jul 2021 9.04 PM
root / 996
0644
wsgi.py
10.888 KB
27 Jul 2021 9.04 PM
root / 996
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF