Skip to content

Commit b4649f0

Browse files
Merge pull request #640 from MervinPraison/develop
Develop
2 parents 51323a9 + dd0120b commit b4649f0

File tree

3 files changed

+91
-1
lines changed

3 files changed

+91
-1
lines changed

src/praisonai-agents/praisonaiagents/telemetry/telemetry.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ def __init__(self, enabled: bool = None):
8686
self._posthog = Posthog(
8787
project_api_key='phc_skZpl3eFLQJ4iYjsERNMbCO6jfeSJi2vyZlPahKgxZ7',
8888
host='https://eu.i.posthog.com',
89-
disable_geoip=True
89+
disable_geoip=True,
90+
on_error=lambda e: self.logger.debug(f"PostHog error: {e}"),
91+
sync_mode=False # Use async mode to prevent blocking
9092
)
9193
except:
9294
self._posthog = None
@@ -220,13 +222,33 @@ def flush(self):
220222
'$geoip_disable': True
221223
}
222224
)
225+
# Don't flush here - let PostHog handle it asynchronously
223226
except:
224227
pass
225228

226229
# Reset counters
227230
for key in self._metrics:
228231
if isinstance(self._metrics[key], int):
229232
self._metrics[key] = 0
233+
234+
def shutdown(self):
235+
"""
236+
Shutdown telemetry and ensure all events are sent.
237+
"""
238+
if not self.enabled:
239+
return
240+
241+
# Final flush
242+
self.flush()
243+
244+
# Shutdown PostHog if available
245+
if hasattr(self, '_posthog') and self._posthog:
246+
try:
247+
# Force a synchronous flush before shutdown
248+
self._posthog.flush()
249+
self._posthog.shutdown()
250+
except:
251+
pass
230252

231253

232254
# Global telemetry instance

src/praisonai-agents/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
pydantic
33
rich
44
openai>=1.30.0
5+
posthog>=3.0.0
56

67
# Memory dependencies
78
chromadb>=0.5.23
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Test PostHog integration after fix.
4+
"""
5+
6+
import os
7+
import time
8+
9+
# Ensure telemetry is enabled
10+
for var in ['PRAISONAI_TELEMETRY_DISABLED', 'PRAISONAI_DISABLE_TELEMETRY', 'DO_NOT_TRACK']:
11+
if var in os.environ:
12+
del os.environ[var]
13+
14+
print("=== Testing PostHog Fix ===\n")
15+
16+
# Test PostHog directly first
17+
print("1. Testing PostHog directly:")
18+
try:
19+
from posthog import Posthog
20+
21+
# Create PostHog client
22+
ph = Posthog(
23+
project_api_key='phc_skZpl3eFLQJ4iYjsERNMbCO6jfeSJi2vyZlPahKgxZ7',
24+
host='https://eu.i.posthog.com'
25+
)
26+
27+
# Send test event
28+
ph.capture('test-user', 'direct_test', {'timestamp': time.time()})
29+
30+
# Flush and shutdown properly
31+
ph.flush()
32+
ph.shutdown()
33+
34+
print("✓ Direct PostHog test successful\n")
35+
except Exception as e:
36+
print(f"✗ Direct PostHog test failed: {e}\n")
37+
38+
# Test telemetry module
39+
print("2. Testing telemetry module:")
40+
from praisonaiagents.telemetry.telemetry import MinimalTelemetry
41+
42+
# Create telemetry instance
43+
telemetry = MinimalTelemetry(enabled=True)
44+
45+
# Track events
46+
telemetry.track_agent_execution("TestAgent", success=True)
47+
telemetry.track_task_completion("TestTask", success=True)
48+
telemetry.track_tool_usage("TestTool", success=True)
49+
50+
print(f"✓ Events tracked")
51+
print(f"✓ PostHog client available: {telemetry._posthog is not None}")
52+
53+
# Flush
54+
print("\n3. Flushing telemetry...")
55+
telemetry.flush()
56+
print("✓ Flush completed")
57+
58+
# Shutdown
59+
print("\n4. Shutting down telemetry...")
60+
telemetry.shutdown()
61+
print("✓ Shutdown completed")
62+
63+
print("\n=== Test Complete ===")
64+
print("\nPostHog should now be receiving data properly!")
65+
print("The fix adds:")
66+
print("1. posthog.flush() call in the flush() method")
67+
print("2. shutdown() method that properly closes the connection")

0 commit comments

Comments
 (0)