| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Python agent using sys.settrace for breakpoint support and sys.excepthook for exception capture.
pip install aivory-monitorimport aivory_monitor
# Initialize with environment variables
aivory_monitor.init()
# Or pass configuration directly
aivory_monitor.init(
api_key='your-api-key',
environment='production'
)
# Your application codeSet environment variables before importing your application:
export AIVORY_API_KEY=your_api_key
python app.pyThen initialize in your application entry point:
import aivory_monitor
aivory_monitor.init()
# Rest of your applicationDjango:
Add to your settings.py:
MIDDLEWARE = [
'aivory_monitor.integrations.django.DjangoIntegration',
# ... other middleware
]
# Initialize agent
import aivory_monitor
aivory_monitor.init(api_key='your-api-key')Flask:
from flask import Flask
from aivory_monitor.integrations.flask import init_app
import aivory_monitor
app = Flask(__name__)
# Initialize agent
aivory_monitor.init(api_key='your-api-key')
# Add Flask integration
init_app(app)FastAPI:
from fastapi import FastAPI
from aivory_monitor.integrations.fastapi import init_app
import aivory_monitor
app = FastAPI()
# Initialize agent
aivory_monitor.init(api_key='your-api-key')
# Add FastAPI integration
init_app(app)import aivory_monitor
try:
risky_operation()
except Exception as e:
# Capture exception with additional context
aivory_monitor.capture_exception(e, context={
'user_id': '12345',
'operation': 'payment_processing'
})
raiseimport aivory_monitor
# Set custom context (included in all captures)
aivory_monitor.set_context({
'feature_flags': {'new_ui': True},
'tenant_id': 'acme-corp'
})
# Set user information
aivory_monitor.set_user(
user_id='user-123',
email='user@example.com',
username='john_doe'
)All configuration options can be set via environment variables or passed to init():
| Parameter | Environment Variable | Default | Description |
|---|---|---|---|
| api_key | AIVORY_API_KEY | Required | AIVory API key for authentication |
| backend_url | AIVORY_BACKEND_URL | wss://api.aivory.net/ws/agent | Backend WebSocket URL |
| environment | AIVORY_ENVIRONMENT | production | Environment name (production, staging, etc.) |
| sampling_rate | AIVORY_SAMPLING_RATE | 1.0 | Exception sampling rate (0.0 - 1.0) |
| max_capture_depth | AIVORY_MAX_DEPTH | 10 | Maximum depth for variable capture |
| max_string_length | AIVORY_MAX_STRING_LENGTH | 1000 | Maximum string length to capture |
| max_collection_size | AIVORY_MAX_COLLECTION_SIZE | 100 | Maximum collection elements to capture |
| enable_breakpoints | AIVORY_ENABLE_BREAKPOINTS | true | Enable non-breaking breakpoint support |
| debug | AIVORY_DEBUG | false | Enable debug logging |
Environment Variables:
export AIVORY_API_KEY=your_api_key
export AIVORY_BACKEND_URL=wss://api.aivory.net/ws/agent
export AIVORY_ENVIRONMENT=production
export AIVORY_SAMPLING_RATE=0.5
export AIVORY_MAX_DEPTH=5
export AIVORY_DEBUG=falseProgrammatic:
import aivory_monitor
aivory_monitor.init(
api_key='your-api-key',
backend_url='wss://api.aivory.net/ws/agent',
environment='production',
sampling_rate=0.5,
max_capture_depth=5,
max_string_length=500,
max_collection_size=50,
enable_breakpoints=True,
debug=False
)cd monitor-agents/agent-python
pip install -e .
# Or build distribution packages
pip install build
python -m buildKey Features:
The Django integration provides:
# settings.py
MIDDLEWARE = [
'aivory_monitor.integrations.django.DjangoIntegration',
# ... other middleware
]
import aivory_monitor
aivory_monitor.init(api_key='your-api-key')
# Optional: Configure logging integration
from aivory_monitor.integrations.django import configure_django_logging
LOGGING = configure_django_logging()The Flask integration provides:
from flask import Flask
from aivory_monitor.integrations.flask import init_app
import aivory_monitor
app = Flask(__name__)
aivory_monitor.init(api_key='your-api-key')
init_app(app)The FastAPI integration provides:
from fastapi import FastAPI
from aivory_monitor.integrations.fastapi import init_app
import aivory_monitor
app = FastAPI()
aivory_monitor.init(api_key='your-api-key')
init_app(app)For generic ASGI applications, use AIVoryMiddleware:
from aivory_monitor.integrations.fastapi import AIVoryMiddleware
app = AIVoryMiddleware(app)Create a test script to trigger exceptions:
# test-app.py
import aivory_monitor
import time
aivory_monitor.init(
api_key='ilscipio-dev-2024',
backend_url='ws://localhost:19999/ws/monitor/agent',
environment='development',
debug=True
)
print("Agent initialized, waiting 2s for connection...")
time.sleep(2)
# Test 1: Simple exception
try:
raise ValueError("Test exception from Python agent")
except Exception as e:
aivory_monitor.capture_exception(e)
# Test 2: Null reference
try:
x = None
x.some_method()
except Exception as e:
aivory_monitor.capture_exception(e)
# Test 3: With context
try:
result = 10 / 0
except Exception as e:
aivory_monitor.capture_exception(e, context={
'operation': 'divide',
'user_id': 'test-user'
})
print("Test exceptions sent. Check backend logs.")
time.sleep(2)
aivory_monitor.shutdown()Run with:
python test-app.py# test-server.py
from flask import Flask
from aivory_monitor.integrations.flask import init_app
import aivory_monitor
app = Flask(__name__)
aivory_monitor.init(
api_key='ilscipio-dev-2024',
backend_url='ws://localhost:19999/ws/monitor/agent',
environment='development',
debug=True
)
init_app(app)
@app.route('/error')
def trigger_error():
raise ValueError("Test sync error")
@app.route('/null')
def trigger_null():
x = None
return x.some_attribute
@app.route('/divide')
def trigger_divide():
return 10 / 0
@app.route('/')
def index():
return 'Endpoints: /error, /null, /divide'
if __name__ == '__main__':
print("Test server: http://localhost:5000")
app.run(port=5000, debug=False)Test URLs:
Breakpoints not working:
High memory usage:
Agent not connecting:
Exceptions not captured in Django:
Threading issues:
Import errors:
| Back | FazBrowse Home | New Git URL |