set_gauge
in favor of the newer OpenTelemetry's sync implementation.View the Python package v1.3.10 changelog for more information.
Add helper to manually stop the agent process for this AppSignal instance.
Some contexts, like serverless functions, exit before AppSignal can ensure all data is sent to our servers. To ensure the data is sent, the new appsignal.stop()
method can be called to gracefully stop the AppSignal agent process.
View the Python package v1.3.9 changelog for more information.
Rename heartbeats to cron check-ins. Calls to appsignal.heartbeat
and appsignal.Heartbeat
should be replaced with calls to appsignal.check_in.cron
and appsignal.check_in.Cron
, for example:
# Before from appsignal import heartbeat def do_something(): pass heartbeat("do_something", do_something) # After from appsignal.check_in import cron def do_something(): pass cron("do_something", do_something)
appsignal.heartbeat
and to the appsignal.Heartbeat
constructor will emit a deprecation warning.View the Python package v1.3.8 changelog for more information.
View the Python package v1.3.7 changelog for more information.
Fix an issue where Redis events are misidentified as HTTP events.
View the Python package v1.3.6 changelog for more information.
Rename the hostname
tag, which contains the host of the URI that an HTTP request was made against, to request_host
.
This fixes an issue where the hostname
tag would later be internally overriden to the hostname of the machine processing the request, but notifications would still be emitted containing the previous hostname
value.
View the Python package v1.3.5 changelog for more information.
Add noop mode for unsupported system like MS Windows.
See the Python package 1.3.4 changelog for more information.
Support Kamal-based deployments. Read the KAMAL_VERSION
environment variable, which Kamal exposes within the deployed container, if present, and use it as the application revision if it is not set. This will automatically report deploy markers for applications using Kamal.
See the Python package 1.3.3 changelog for more information.
Add support for the aiopg
, asyncpg
, mysql
(from the mysql-connector-python
package), mysqlclient
, and pymysql
database adapters.
To enable AppSignal to instrument queries performed using these packages, follow the instructions in our PostgreSQL and MySQL documentation pages.
See the Python package 1.3.2 changelog for more information.
Add support for SQLAlchemy, SQLite and version 3 of the psycopg
PostgreSQL adapter.
To enable AppSignal to instrument queries performed using these packages, follow the instructions in our SQLAlchemy, SQLite and PostgreSQL documentation pages.
See the Python package 1.3.1 changelog for more information.
Heartbeats are currently only available to beta testers. If you are interested in trying it out, send an email to support@appsignal.com!
Add heartbeats support. You can use the heartbeat
function to send heartbeats directly from your code, to track the execution of certain processes:
from appsignal import heartbeat def send_invoices(): # ... your code here ... heartbeat("send_invoices")
It is also possible to pass a defined function as an argument to the heartbeat
function:
def send_invoices(): # ... your code here ... heartbeat("send_invoices", send_invoices)
If an exception is raised within the function, the finish event will not be reported to AppSignal, triggering a notification about the missing heartbeat. The exception will be raised outside of the heartbeat function.
See the Python package 1.3.0 changelog for more information.
When Flask apps received requests that didn't match with any app routes, those 404s were instrumented. This made the actions panel to show tons of actions corresponding to bots requests and the like, giving no meaningful information. This has been fixed and 404s will only be reported if they are part of your Flask app.
Add a minutely probes system. This can be used, alongside our metric helpers, to report metrics to AppSignal once per minute.
from appsignal import probes, set_gauge def new_carts(previous_carts=None): current_carts = Cart.objects.all().count() if previous_carts is not None: set_gauge("new_carts", current_carts - previous_carts) return current_carts probes.register("new_carts", new_carts)
The minutely probes system starts by default, but no probes are automatically registered. You can use the enable_minutely_probes
configuration option to disable it.
Implement CPU count configuration option. Use it to override the auto-detected, cgroups-provided number of CPUs that is used to calculate CPU usage percentages.
To set it, use the the cpu_count
configuration option or the APPSIGNAL_CPU_COUNT
environment variable.
Fix ASGI events, from Python ASGI applications that have been instrumented with AppSignal, mistakenly showing up in the "Slow API requests" panel.
Add distribution value custom metric helper. This can be used to add values to distributions in the same way as in our other integrations:
# Import the AppSignal metric helper from appsignal import add_distribution_value # The first argument is a string, the second argument a number (int/float) # add_distribution_value(metric_name, value) add_distribution_value("memory_usage", 100) add_distribution_value("memory_usage", 110) # Will create a metric "memory_usage" with the mean field value 105 # Will create a metric "memory_usage" with the count field value 2
See the Python package 1.1.1 changelog for more information.
See the Python package 1.1.0 changelog for more information.
df --local
command fails.See the Python package 1.0.4 changelog for more information.
route
tag from HTTP server spans. Since the span will already have the route attribute as part of its name, the tag is redundant./etc/hostname
, /etc/hosts
, /etc/resolv.conf
, /snap/
or /proc/
is ignored.method
tag extracted from an incoming HTTP request span would be overriden with the method used for an outgoing HTTP request span.df
) on Alpine Linux. This host metric would report an error on Alpine Linux.See the Python package 1.0.3 changelog for more information.
See the Python package 1.0.2 changelog for more information.
Report the agent's architecture and platform in the diagnose report as the "Agent architecture" field. This helps debug if the installed package version matches the host architecture and platform. If they do not match, the package for the wrong architecture is installed.
Report the package install path in the diagnose report as the "Package install path" field. This field will help us debug issues related to paths in the diagnose report viewer.
Report whether the app is running in a container in the diagnose report as the "Running in container" field. This field will help notify us about the environment in which the app is running, as containers have different behavior from more standard Virtual Machines.
Bump agent to b604345.
running_in_container
to agent diagnose report, to be used primarily by the Python package as a way to detect if an app's host is a container or not.See the Python package 1.0.1 changelog for more information.
Release AppSignal for Python package version 1.0!
Read our Python package version 1.0 announcement blog post!
This release marks the 1.0 release of our Python integration and contains the following features:
Please see our Python package documentation and guides for more information. Reach out to us on support@appsignal.com if you need any help 👋
ValueError
to DemoError
to better communicate this is an example error and should not be treated as a real error from the app.appsignal.log
file, was not found, the diagnose CLI would exit with an error when trying to read from the file. It will now no longer try to read a non-existing file and no longer error.See the Python package 1.0.0 changelog for more information.
AppSignal offers a 30-day free trial, no credit card is required. All features are available in all plans. Start monitoring your application in just a few clicks!