[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.216.66.30: ~ $
from __future__ import absolute_import

import weakref

from sentry_sdk.hub import Hub
from sentry_sdk.integrations import Integration
from sentry_sdk.utils import capture_internal_exceptions, event_from_exception

from rq.timeouts import JobTimeoutException  # type: ignore
from rq.worker import Worker  # type: ignore

if False:
    from typing import Any
    from typing import Dict
    from typing import Callable

    from rq.job import Job  # type: ignore
    from rq.queue import Queue  # type: ignore

    from sentry_sdk.utils import ExcInfo


class RqIntegration(Integration):
    identifier = "rq"

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

        old_perform_job = Worker.perform_job

        def sentry_patched_perform_job(self, job, *args, **kwargs):
            # type: (Any, Job, *Queue, **Any) -> bool
            hub = Hub.current
            integration = hub.get_integration(RqIntegration)

            if integration is None:
                return old_perform_job(self, job, *args, **kwargs)

            with hub.push_scope() as scope:
                scope.clear_breadcrumbs()
                scope.add_event_processor(_make_event_processor(weakref.ref(job)))
                rv = old_perform_job(self, job, *args, **kwargs)

            if self.is_horse:
                # We're inside of a forked process and RQ is
                # about to call `os._exit`. Make sure that our
                # events get sent out.
                hub.client.flush()

            return rv

        Worker.perform_job = sentry_patched_perform_job

        old_handle_exception = Worker.handle_exception

        def sentry_patched_handle_exception(self, job, *exc_info, **kwargs):
            _capture_exception(exc_info)
            return old_handle_exception(self, job, *exc_info, **kwargs)

        Worker.handle_exception = sentry_patched_handle_exception


def _make_event_processor(weak_job):
    # type: (Callable[[], Job]) -> Callable
    def event_processor(event, hint):
        # type: (Dict[str, Any], Dict[str, Any]) -> Dict[str, Any]
        job = weak_job()
        if job is not None:
            with capture_internal_exceptions():
                event["transaction"] = job.func_name

            with capture_internal_exceptions():
                extra = event.setdefault("extra", {})
                extra["rq-job"] = {
                    "job_id": job.id,
                    "func": job.func_name,
                    "args": job.args,
                    "kwargs": job.kwargs,
                    "description": job.description,
                }

        if "exc_info" in hint:
            with capture_internal_exceptions():
                if issubclass(hint["exc_info"][0], JobTimeoutException):
                    event["fingerprint"] = ["rq", "JobTimeoutException", job.func_name]

        return event

    return event_processor


def _capture_exception(exc_info, **kwargs):
    # type: (ExcInfo, **Any) -> None
    hub = Hub.current
    if hub.get_integration(RqIntegration) is None:
        return
    event, hint = event_from_exception(
        exc_info,
        client_options=hub.client.options,
        mechanism={"type": "rq", "handled": False},
    )

    hub.capture_event(event, hint=hint)

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
django Folder 0755
__init__.py File 4.14 KB 0644
_wsgi_common.py File 3.58 KB 0644
aiohttp.py File 3.8 KB 0644
argv.py File 894 B 0644
atexit.py File 1.46 KB 0644
aws_lambda.py File 6.6 KB 0644
bottle.py File 5.4 KB 0644
celery.py File 4.32 KB 0644
dedupe.py File 1.06 KB 0644
excepthook.py File 1.3 KB 0644
flask.py File 7.1 KB 0644
gnu_backtrace.py File 2.94 KB 0644
logging.py File 5.88 KB 0644
modules.py File 1.21 KB 0644
pyramid.py File 5.78 KB 0644
rq.py File 3.2 KB 0644
sanic.py File 6.9 KB 0644
serverless.py File 1.21 KB 0644
stdlib.py File 1.83 KB 0644
threading.py File 1.56 KB 0644
tornado.py File 6.24 KB 0644
wsgi.py File 7.13 KB 0644