forked from danswer-ai/danswer
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Feature/token rate limits and update teamspace user roles (#167)
* feat: teamspace_chatfolder relationship table; get assistant by teamspace_id * feat: include token rate limit on fetch teamspace; update teamspace user role --------- Co-authored-by: Kai Tecson <111247289+SchadenKai@users.noreply.github.com>
- Loading branch information
1 parent
add1c85
commit 8beda16
Showing
10 changed files
with
217 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
import tracemalloc | ||
|
||
from enmedd.utils.logger import setup_logger | ||
|
||
logger = setup_logger() | ||
|
||
ENMEDD_TRACEMALLOC_FRAMES = 10 | ||
|
||
|
||
class EnmeddTracer: | ||
def __init__(self) -> None: | ||
self.snapshot_first: tracemalloc.Snapshot | None = None | ||
self.snapshot_prev: tracemalloc.Snapshot | None = None | ||
self.snapshot: tracemalloc.Snapshot | None = None | ||
|
||
def start(self) -> None: | ||
tracemalloc.start(ENMEDD_TRACEMALLOC_FRAMES) | ||
|
||
def stop(self) -> None: | ||
tracemalloc.stop() | ||
|
||
def snap(self) -> None: | ||
snapshot = tracemalloc.take_snapshot() | ||
# Filter out irrelevant frames (e.g., from tracemalloc itself or importlib) | ||
snapshot = snapshot.filter_traces( | ||
( | ||
tracemalloc.Filter(False, tracemalloc.__file__), # Exclude tracemalloc | ||
tracemalloc.Filter( | ||
False, "<frozen importlib._bootstrap>" | ||
), # Exclude importlib | ||
tracemalloc.Filter( | ||
False, "<frozen importlib._bootstrap_external>" | ||
), # Exclude external importlib | ||
) | ||
) | ||
|
||
if not self.snapshot_first: | ||
self.snapshot_first = snapshot | ||
|
||
if self.snapshot: | ||
self.snapshot_prev = self.snapshot | ||
|
||
self.snapshot = snapshot | ||
|
||
def log_snapshot(self, numEntries: int) -> None: | ||
if not self.snapshot: | ||
return | ||
|
||
stats = self.snapshot.statistics("traceback") | ||
for s in stats[:numEntries]: | ||
logger.info(f"Tracer snap: {s}") | ||
for line in s.traceback: | ||
logger.info(f"* {line}") | ||
|
||
@staticmethod | ||
def log_diff( | ||
snap_current: tracemalloc.Snapshot, | ||
snap_previous: tracemalloc.Snapshot, | ||
numEntries: int, | ||
) -> None: | ||
stats = snap_current.compare_to(snap_previous, "traceback") | ||
for s in stats[:numEntries]: | ||
logger.info(f"Tracer diff: {s}") | ||
for line in s.traceback.format(): | ||
logger.info(f"* {line}") | ||
|
||
def log_previous_diff(self, numEntries: int) -> None: | ||
if not self.snapshot or not self.snapshot_prev: | ||
return | ||
|
||
EnmeddTracer.log_diff(self.snapshot, self.snapshot_prev, numEntries) | ||
|
||
def log_first_diff(self, numEntries: int) -> None: | ||
if not self.snapshot or not self.snapshot_first: | ||
return | ||
|
||
EnmeddTracer.log_diff(self.snapshot, self.snapshot_first, numEntries) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.