GRAYBYTE WORDPRESS FILE MANAGER3457

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/hc_python/lib/python3.12/site-packages/sentry_sdk/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/hc_python/lib/python3.12/site-packages/sentry_sdk//monitor.py
import os
import time
from threading import Thread, Lock

import sentry_sdk
from sentry_sdk.utils import logger

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from typing import Optional


MAX_DOWNSAMPLE_FACTOR = 10


class Monitor:
    """
    Performs health checks in a separate thread once every interval seconds
    and updates the internal state. Other parts of the SDK only read this state
    and act accordingly.
    """

    name = "sentry.monitor"

    def __init__(self, transport, interval=10):
        # type: (sentry_sdk.transport.Transport, float) -> None
        self.transport = transport  # type: sentry_sdk.transport.Transport
        self.interval = interval  # type: float

        self._healthy = True
        self._downsample_factor = 0  # type: int

        self._thread = None  # type: Optional[Thread]
        self._thread_lock = Lock()
        self._thread_for_pid = None  # type: Optional[int]
        self._running = True

    def _ensure_running(self):
        # type: () -> None
        """
        Check that the monitor has an active thread to run in, or create one if not.

        Note that this might fail (e.g. in Python 3.12 it's not possible to
        spawn new threads at interpreter shutdown). In that case self._running
        will be False after running this function.
        """
        if self._thread_for_pid == os.getpid() and self._thread is not None:
            return None

        with self._thread_lock:
            if self._thread_for_pid == os.getpid() and self._thread is not None:
                return None

            def _thread():
                # type: (...) -> None
                while self._running:
                    time.sleep(self.interval)
                    if self._running:
                        self.run()

            thread = Thread(name=self.name, target=_thread)
            thread.daemon = True
            try:
                thread.start()
            except RuntimeError:
                # Unfortunately at this point the interpreter is in a state that no
                # longer allows us to spawn a thread and we have to bail.
                self._running = False
                return None

            self._thread = thread
            self._thread_for_pid = os.getpid()

        return None

    def run(self):
        # type: () -> None
        self.check_health()
        self.set_downsample_factor()

    def set_downsample_factor(self):
        # type: () -> None
        if self._healthy:
            if self._downsample_factor > 0:
                logger.debug(
                    "[Monitor] health check positive, reverting to normal sampling"
                )
            self._downsample_factor = 0
        else:
            if self.downsample_factor < MAX_DOWNSAMPLE_FACTOR:
                self._downsample_factor += 1
            logger.debug(
                "[Monitor] health check negative, downsampling with a factor of %d",
                self._downsample_factor,
            )

    def check_health(self):
        # type: () -> None
        """
        Perform the actual health checks,
        currently only checks if the transport is rate-limited.
        TODO: augment in the future with more checks.
        """
        self._healthy = self.transport.is_healthy()

    def is_healthy(self):
        # type: () -> bool
        self._ensure_running()
        return self._healthy

    @property
    def downsample_factor(self):
        # type: () -> int
        self._ensure_running()
        return self._downsample_factor

    def kill(self):
        # type: () -> None
        self._running = False

    def __del__(self):
        # type: () -> None
        self.kill()

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 23 2025 08:31:29
root / root
0755
__pycache__
--
May 23 2025 08:31:28
root / root
0755
ai
--
May 23 2025 08:31:28
root / root
0755
crons
--
May 23 2025 08:31:28
root / root
0755
integrations
--
May 23 2025 08:31:28
root / root
0755
profiler
--
May 23 2025 08:31:28
root / root
0755
__init__.py
1.187 KB
May 23 2025 08:31:28
root / root
0644
_compat.py
3.043 KB
May 23 2025 08:31:28
root / root
0644
_init_implementation.py
2.499 KB
May 23 2025 08:31:28
root / root
0644
_log_batcher.py
4.966 KB
May 23 2025 08:31:28
root / root
0644
_lru_cache.py
1.2 KB
May 23 2025 08:31:28
root / root
0644
_queue.py
10.986 KB
May 23 2025 08:31:28
root / root
0644
_types.py
10.217 KB
May 23 2025 08:31:28
root / root
0644
_werkzeug.py
3.646 KB
May 23 2025 08:31:28
root / root
0644
api.py
11.588 KB
May 23 2025 08:31:28
root / root
0644
attachments.py
3.036 KB
May 23 2025 08:31:28
root / root
0644
client.py
37.138 KB
May 23 2025 08:31:28
root / root
0644
consts.py
39.679 KB
May 23 2025 08:31:28
root / root
0644
debug.py
0.995 KB
May 23 2025 08:31:28
root / root
0644
envelope.py
10.112 KB
May 23 2025 08:31:28
root / root
0644
feature_flags.py
2.181 KB
May 23 2025 08:31:28
root / root
0644
hub.py
25.073 KB
May 23 2025 08:31:28
root / root
0644
logger.py
1.617 KB
May 23 2025 08:31:28
root / root
0644
metrics.py
29.212 KB
May 23 2025 08:31:28
root / root
0644
monitor.py
3.623 KB
May 23 2025 08:31:28
root / root
0644
py.typed
0 KB
May 23 2025 08:31:28
root / root
0644
scope.py
61.848 KB
May 23 2025 08:31:28
root / root
0644
scrubber.py
5.922 KB
May 23 2025 08:31:28
root / root
0644
serializer.py
12.78 KB
May 23 2025 08:31:28
root / root
0644
session.py
5.44 KB
May 23 2025 08:31:28
root / root
0644
sessions.py
8.966 KB
May 23 2025 08:31:28
root / root
0644
spotlight.py
8.475 KB
May 23 2025 08:31:28
root / root
0644
tracing.py
46.986 KB
May 23 2025 08:31:28
root / root
0644
tracing_utils.py
28.145 KB
May 23 2025 08:31:28
root / root
0644
transport.py
31.84 KB
May 23 2025 08:31:28
root / root
0644
types.py
1.193 KB
May 23 2025 08:31:28
root / root
0644
utils.py
57.977 KB
May 23 2025 08:31:28
root / root
0644
worker.py
4.359 KB
May 23 2025 08:31:28
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF