Skip to main content

Falcon error tracking SDK for Python

Project description

roselabs-falcon

Official Falcon error tracking SDK for Python.

Installation

pip install roselabs-falcon

Quick Start

from falcon_sdk import init, capture_exception

# Initialize Falcon - validates immediately, fails fast on bad config
init(
    api_key="sk_your_api_key",
    app_name="my-app",
    environment="production",
)

# That's it! Now capture errors manually or install auto-capture.

Automatic Exception Capture

from falcon_sdk import Falcon, FalconConfig

falcon = Falcon(FalconConfig(
    api_key="sk_your_api_key",
    app_name="my-app",
    environment="production",
))

# Install automatic exception handler
falcon.install()

# Now uncaught exceptions are automatically reported

Manual Error Capture

from falcon_sdk import capture_exception

try:
    risky_operation()
except Exception as e:
    capture_exception(e, context={"user_id": "123", "action": "checkout"})

Capture Messages

from falcon_sdk import capture_message

capture_message("User completed signup", level="info", context={"plan": "pro"})

User Context

from falcon_sdk import set_user

# Set user context for all future events
set_user(user_id="user-123", email="user@example.com", name="John Doe")

# Clear user on logout
set_user()

Async Support

from falcon_sdk import Falcon, FalconConfig

falcon = Falcon(FalconConfig(
    api_key="sk_your_api_key",
    app_name="my-app",
))

# Async capture
await falcon.capture_exception_async(error)
await falcon.capture_message_async("Hello", level="info")

Configuration Options

from falcon_sdk import Falcon, FalconConfig

falcon = Falcon(FalconConfig(
    # Required
    api_key="sk_your_api_key",
    app_name="my-app",

    # Optional
    environment="production",           # Default: None
    release="1.0.0",                    # Default: None
    api_url="https://api.falcon.roselabs.io",  # Default
    enabled=True,                       # Default: True
    debug=False,                        # Default: False

    # Rate limiting (prevents error storms)
    max_events_per_minute=60,           # Default: 60, 0=unlimited
    max_events_per_second=10,           # Default: 10, 0=unlimited

    # Before send hook
    before_send=lambda event: event,    # Return None to drop
))

Pre-validation

The SDK validates configuration immediately on initialization. If your config is invalid, you'll get a FalconConfigError right away instead of silent failures later:

from falcon_sdk import init, FalconConfigError

try:
    init(api_key="bad_key", app_name="my-app")  # Missing sk_ prefix
except FalconConfigError as e:
    print(f"Config error: {e}")
    # Invalid Falcon configuration:
    #   - apiKey must start with 'sk_' (e.g., 'sk_your_key_here')

Rate Limiting

Built-in rate limiting prevents error storms from overwhelming your server:

init(
    api_key="sk_xxx",
    app_name="my-app",
    max_events_per_second=10,   # Burst limit
    max_events_per_minute=60,   # Sustained limit
)

When limits are exceeded, events are silently dropped (logged in debug mode).

Logging Integration

Automatically send Python logging errors to Falcon:

import logging
from falcon_sdk import Falcon, FalconConfig

falcon = Falcon(FalconConfig(api_key="sk_xxx", app_name="my-app"))

# Add Falcon handler to root logger
logging.getLogger().addHandler(falcon.get_logging_handler())

# Now logging.error() also reports to Falcon
logging.error("Something went wrong!")

Decorator

Automatically capture errors from functions:

from falcon_sdk import Falcon, FalconConfig

falcon = Falcon(FalconConfig(api_key="sk_xxx", app_name="my-app"))

@falcon.capture_errors
def risky_function():
    raise ValueError("Something went wrong")

@falcon.capture_errors
async def risky_async_function():
    raise ValueError("Async error")

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roselabs_falcon-0.1.0.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roselabs_falcon-0.1.0-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

Details for the file roselabs_falcon-0.1.0.tar.gz.

File metadata

  • Download URL: roselabs_falcon-0.1.0.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for roselabs_falcon-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2fb7ec29e2911928f770eaab411fac7c3fcc58e277828961d721431a3067d473
MD5 25ce58aeb87fe9ac87215cd7b1f9284b
BLAKE2b-256 dd3d66240f758b6c8f9e2aea747e3e0b76fafea44a9b81b3043040222b94504e

See more details on using hashes here.

File details

Details for the file roselabs_falcon-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: roselabs_falcon-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for roselabs_falcon-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0d69ab9190b0f634738e8d54c62cbc366813c44817e273ecdbf27a77a37c4796
MD5 03e411e59e2c9a3c2284aaf5de5a4af4
BLAKE2b-256 ab98ba7c7f4280e219bbf3f2d32e130c0f416e3bbd45a3b5c031bc5bcccbffc3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page