REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 3.47 KB
Close
//opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/worker.py
Text
Base64
import os from threading import Thread, Lock from time import sleep, time from sentry_sdk._compat import queue, check_thread_support from sentry_sdk.utils import logger if False: from queue import Queue from typing import Any from typing import Optional from typing import Callable _TERMINATOR = object() class BackgroundWorker(object): def __init__(self): # type: () -> None check_thread_support() self._queue = queue.Queue(-1) # type: Queue[Any] self._lock = Lock() self._thread = None # type: Optional[Thread] self._thread_for_pid = None # type: Optional[int] @property def is_alive(self): # type: () -> bool if self._thread_for_pid != os.getpid(): return False if not self._thread: return False return self._thread.is_alive() def _ensure_thread(self): # type: () -> None if not self.is_alive: self.start() def _timed_queue_join(self, timeout): # type: (float) -> bool deadline = time() + timeout queue = self._queue queue.all_tasks_done.acquire() # type: ignore try: while queue.unfinished_tasks: # type: ignore delay = deadline - time() if delay <= 0: return False queue.all_tasks_done.wait(timeout=delay) # type: ignore return True finally: queue.all_tasks_done.release() # type: ignore def start(self): # type: () -> None with self._lock: if not self.is_alive: self._thread = Thread( target=self._target, name="raven-sentry.BackgroundWorker" ) self._thread.setDaemon(True) self._thread.start() self._thread_for_pid = os.getpid() def kill(self): # type: () -> None logger.debug("background worker got kill request") with self._lock: if self._thread: self._queue.put_nowait(_TERMINATOR) self._thread = None self._thread_for_pid = None def flush(self, timeout, callback=None): # type: (float, Optional[Any]) -> None logger.debug("background worker got flush request") with self._lock: if self.is_alive and timeout > 0.0: self._wait_flush(timeout, callback) logger.debug("background worker flushed") def _wait_flush(self, timeout, callback): # type: (float, Optional[Any]) -> None initial_timeout = min(0.1, timeout) if not self._timed_queue_join(initial_timeout): pending = self._queue.qsize() logger.debug("%d event(s) pending on flush", pending) if callback is not None: callback(pending, timeout) self._timed_queue_join(timeout - initial_timeout) def submit(self, callback): # type: (Callable) -> None self._ensure_thread() self._queue.put_nowait(callback) def _target(self): # type: () -> None while True: callback = self._queue.get() try: if callback is _TERMINATOR: break try: callback() except Exception: logger.error("Failed processing job", exc_info=True) finally: self._queue.task_done() sleep(0)
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 2 × Files: 11
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
integrations
DIR
-
drwxr-xr-x
2024-03-21 10:24:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__pycache__
DIR
-
drwxr-xr-x
2024-03-21 10:24:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
api.py
2.82 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
client.py
8.40 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
consts.py
2.21 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
debug.py
1.01 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
hub.py
12.72 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
scope.py
7.02 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
transport.py
6.79 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
utils.py
26.92 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
worker.py
3.47 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_compat.py
2.17 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.py
1.40 KB
lrw-r--r--
2019-04-05 23:15:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).