(Fix) langfuse - setting LANGFUSE_FLUSH_INTERVAL (#8007)

* fix langfuse flush interval

* test_get_langfuse_flush_interval

* test_get_langfuse_flush_interval
This commit is contained in:
Ishaan Jaff
2025-01-25 17:17:32 -08:00
committed by GitHub
parent d19614b8c0
commit dcc3bbc264
3 changed files with 44 additions and 4 deletions
+18 -2
View File
@@ -54,8 +54,8 @@ class LangFuseLogger:
self.langfuse_host = "http://" + self.langfuse_host
self.langfuse_release = os.getenv("LANGFUSE_RELEASE")
self.langfuse_debug = os.getenv("LANGFUSE_DEBUG")
self.langfuse_flush_interval = (
os.getenv("LANGFUSE_FLUSH_INTERVAL") or flush_interval
self.langfuse_flush_interval = LangFuseLogger._get_langfuse_flush_interval(
flush_interval
)
http_client = _get_httpx_client()
self.langfuse_client = http_client.client
@@ -708,6 +708,22 @@ class LangFuseLogger:
"""Check if current langfuse version supports completion start time"""
return Version(self.langfuse_sdk_version) >= Version("2.7.3")
@staticmethod
def _get_langfuse_flush_interval(flush_interval: int) -> int:
"""
Get the langfuse flush interval to initialize the Langfuse client
Reads `LANGFUSE_FLUSH_INTERVAL` from the environment variable.
If not set, uses the flush interval passed in as an argument.
Args:
flush_interval: The flush interval to use if LANGFUSE_FLUSH_INTERVAL is not set
Returns:
[int] The flush interval to use to initialize the Langfuse client
"""
return int(os.getenv("LANGFUSE_FLUSH_INTERVAL") or flush_interval)
def _add_prompt_to_generation_params(
generation_params: dict,
@@ -81,7 +81,6 @@ def langfuse_client_init(
langfuse_release = os.getenv("LANGFUSE_RELEASE")
langfuse_debug = os.getenv("LANGFUSE_DEBUG")
langfuse_flush_interval = os.getenv("LANGFUSE_FLUSH_INTERVAL") or flush_interval
parameters = {
"public_key": public_key,
@@ -89,7 +88,9 @@ def langfuse_client_init(
"host": langfuse_host,
"release": langfuse_release,
"debug": langfuse_debug,
"flush_interval": langfuse_flush_interval, # flush interval in seconds
"flush_interval": LangFuseLogger._get_langfuse_flush_interval(
flush_interval
), # flush interval in seconds
}
if Version(langfuse.version.__version__) >= Version("2.6.0"):
@@ -294,6 +294,28 @@ def test_get_langfuse_tags():
assert result == []
@patch.dict(os.environ, {}, clear=True) # Start with empty environment
def test_get_langfuse_flush_interval():
"""
Test that _get_langfuse_flush_interval correctly reads from environment variable
or falls back to the provided flush_interval
"""
default_interval = 60
# Test when env var is not set
result = LangFuseLogger._get_langfuse_flush_interval(
flush_interval=default_interval
)
assert result == default_interval
# Test when env var is set
with patch.dict(os.environ, {"LANGFUSE_FLUSH_INTERVAL": "120"}):
result = LangFuseLogger._get_langfuse_flush_interval(
flush_interval=default_interval
)
assert result == 120
def test_langfuse_e2e_sync(monkeypatch):
from litellm import completion
import litellm
@@ -320,3 +342,4 @@ def test_langfuse_e2e_sync(monkeypatch):
time.sleep(3)
assert langfuse_mock.called