Esempio n. 1
0
    def _capture_event(self, event):
        with capture_internal_exceptions():
            key = self.project_key
            if key is None:
                return

            if not is_current_event_safe():
                metrics.incr("internal.uncaptured.events", skip_internal=False)
                sdk_logger.warn("internal-error.unsafe-stacktrace")
                return

            auth = Auth(
                scheme="https",
                host="localhost",
                project_id=key.project_id,
                public_key=key.public_key,
                secret_key=key.secret_key,
                client="sentry-python/%s" % SDK_VERSION,
            )

            headers = {
                "HTTP_X_SENTRY_AUTH": auth.to_header(),
                "HTTP_CONTENT_ENCODING": "deflate"
            }

            request = self.request_factory.post(
                "/api/{}/store/".format(key.project_id),
                data=zlib.compress(json.dumps(event).encode("utf8")),
                content_type="application/octet-stream",
                **headers)

            from sentry.web.api import StoreView

            resp = StoreView.as_view()(request,
                                       project_id=six.text_type(
                                           key.project_id))

            if resp.status_code != 200:
                sdk_logger.warn(
                    "internal-error.invalid-response",
                    extra={
                        "project_id": settings.SENTRY_PROJECT,
                        "project_key": settings.SENTRY_PROJECT_KEY,
                        "status_code": resp.status_code,
                    },
                )
Esempio n. 2
0
File: sdk.py Progetto: yaoqi/sentry
    def _capture_event(self, event):
        with capture_internal_exceptions():
            key = self.project_key
            if key is None:
                return

            if not is_current_event_safe():
                metrics.incr('internal.uncaptured.events', skip_internal=False)
                sdk_logger.warn('internal-error.unsafe-stacktrace')
                return

            auth = Auth(
                scheme="https",
                host="localhost",
                project_id=key.project_id,
                public_key=key.public_key,
                secret_key=key.secret_key,
                client="sentry-python/%s" % SDK_VERSION
            )

            headers = {
                'HTTP_X_SENTRY_AUTH': auth.to_header(),
                'HTTP_CONTENT_ENCODING': 'deflate'
            }

            request = self.request_factory.post(
                '/api/{}/store/'.format(key.project_id),
                data=zlib.compress(json.dumps(event).encode('utf8')),
                content_type='application/octet-stream',
                **headers
            )

            from sentry.web.api import StoreView
            resp = StoreView.as_view()(
                request,
                project_id=six.text_type(key.project_id),
            )

            if resp.status_code != 200:
                sdk_logger.warn('internal-error.invalid-response', extra={
                    'project_id': settings.SENTRY_PROJECT,
                    'project_key': settings.SENTRY_PROJECT_KEY,
                    'status_code': resp.status_code,
                })
Esempio n. 3
0
    def capture_event(self, event):
        with capture_internal_exceptions():
            key = self.project_key
            if key is None:
                return

            if not is_current_event_safe():
                metrics.incr('internal.uncaptured.events')
                sdk_logger.warn('internal-error.unsafe-stacktrace')
                return

            auth = Auth(
                scheme="https",
                host="localhost",
                project_id=key.project_id,
                public_key=key.public_key,
                secret_key=key.secret_key,
                client="sentry-python/%s" % SDK_VERSION
            )

            headers = {
                'HTTP_X_SENTRY_AUTH': auth.to_header(),
                'HTTP_CONTENT_ENCODING': 'deflate'
            }

            request = self.request_factory.post(
                '/api/{}/store/'.format(key.project_id),
                data=zlib.compress(json.dumps(event).encode('utf8')),
                content_type='application/octet-stream',
                **headers
            )

            from sentry.web.api import StoreView
            resp = StoreView.as_view()(
                request,
                project_id=six.text_type(key.project_id),
            )

            if resp.status_code != 200:
                sdk_logger.warn('internal-error.invalid-response', extra={
                    'project_id': settings.SENTRY_PROJECT,
                    'project_key': settings.SENTRY_PROJECT_KEY,
                    'status_code': resp.status_code,
                })