Contrast Runner
As of version 5.24.0, the Python agent provides a new command-line interface (also called a runner) for instrumenting Python applications. In general, when using the runner, it is no longer required to manually configure middleware. Instead, the Contrast runner automatically applies framework-specific instrumentation to your Python application.
The runner command is called contrast-python-run
and is provided as part of the contrast-agent
package. In most Python environments it will be available on the command line without further changes when the contrast-agent
package is installed.
Using the runner
The runner is used by adding the contrast-python-run
command to the beginning of the original command that starts your application.
For example, with a Django application that is started with the following command:
python manage.py runserver
You would run the following command to add Contrast to this application:
contrast-python-run -- python manage.py runserver
Note
The double dash separator “--” is used to separate the runner command's arguments from those that belong to the original command.
In another example, with a Flask application that is started with the following command:
FLASK_APP=apps/app.py flask run --host=localhost --port=8080
Using the Contrast runner would look like this (note that setting the environment variable still happens before the runner command):
FLASK_APP=apps/app.py contrast-python-run -- flask run --host=localhost --port=8080
The
contrast-python-run
command also works when deploying with web servers such as uwsgi and gunicorn. For example:contrast-python-run -- gunicorn apps/app:app --preload -b localhost:8080
It also works when deploying to Apache using mod_wsgi-express. For example:
contrast-python-run -- mod_wsgi-express start-server app/wsgi.py --user=www-data --group www-data
The runner follows the normal order of precedence for Contrast configuration. It is also possible to use environment variables with the runner directly on the command line:
CONTRAST__AGENT__LOGGER__LEVEL=DEBUG contrast-python-run -- python manage.py runserver