Monitor the performance of Python Django apps, Flask apps, and Celery workers with Scout's Python APM Agent. Detailed performance metrics and transaction traces are collected once the scout-apm
package is installed and configured.
Python 2.7 or 3.4+.
Scout APM has integrations for the following frameworks:
- Bottle 0.12+
- Celery 3.1+
- Django 1.8+
- Dramatiq 1.0+
- Falcon 2.0+
- Flask 0.10+
- Huey 2.0+
- Nameko 2.0+
- Pyramid 1.8+
- Starlette 0.12+
For other frameworks, you can use the agent's instrumentation API. See the Python help docs for more information.
A Scout account is required. Signup for Scout.
pip install scout-apm
from scout_apm.bottle import ScoutPlugin
app = bottle.default_app()
app.config.update({
"scout.name": "YOUR_APP_NAME",
"scout.key": "YOUR_KEY",
"scout.monitor": "true",
})
scout = ScoutPlugin()
bottle.install(scout)
# settings.py
INSTALLED_APPS = [
"scout_apm.django", # should be listed first
# ... other apps ...
]
# Scout settings
SCOUT_MONITOR = True
SCOUT_KEY = "[AVAILABLE IN THE SCOUT UI]"
SCOUT_NAME = "A FRIENDLY NAME FOR YOUR APP"
import falcon
from scout_apm.falcon import ScoutMiddleware
scout_middleware = ScoutMiddleware(config={
"key": "[AVAILABLE IN THE SCOUT UI]",
"monitor": True,
"name": "A FRIENDLY NAME FOR YOUR APP",
})
api = falcon.API(middleware=[ScoutMiddleware()])
# Required for accessing extra per-request information
scout_middleware.set_api(api)
These instructions assume the app uses SQLAlchemy
. If that isn't the case, remove the referencing lines.
from scout_apm.flask import ScoutApm
from scout_apm.flask.sqlalchemy import instrument_sqlalchemy
# Setup a flask 'app' as normal
# Attach ScoutApm to the Flask App
ScoutApm(app)
# Instrument the SQLAlchemy handle
instrument_sqlalchemy(db)
# Scout settings
app.config["SCOUT_MONITOR"] = True
app.config["SCOUT_KEY"] = "[AVAILABLE IN THE SCOUT UI]"
app.config["SCOUT_NAME"] = "A FRIENDLY NAME FOR YOUR APP"
Add the SCOUT_*
settings to the Pyramid config, and then config.include('scout_apm.pyramid')
import scout_apm.pyramid
if __name__ == "__main__":
with Configurator() as config:
config.add_settings(
SCOUT_KEY="...",
SCOUT_MONITOR=True,
SCOUT_NAME="My Pyramid App"
)
config.include("scout_apm.pyramid")
# Rest of your config...
For full installation instructions, including information on configuring Scout via environment variables and troubleshooting documentation, see our Python docs.
Please contact us at support@scoutapm.com or create an issue in this repo.