telemere/resources/signal-docstrings/signal-flow.txt

27 lines
1.1 KiB
Text
Raw Normal View History

A signal will be provided to a handler iff ALL of the following are true:
2024-04-12 12:57:24 +00:00
1. Signal (creation) is allowed by compile-time filters
2. Signal (creation) is allowed by runtime filters
3. Signal (handling) is allowed by handler filters
2024-04-12 12:57:24 +00:00
4. Signal middleware does not suppress the signal (return nil)
5. Handler middleware does not suppress the signal (return nil)
2024-04-12 12:57:24 +00:00
For 1-3, filtering may depend on (in order):
Sample rate → namespace → kind → id → level → when form/fn → rate limit
2024-04-12 12:57:24 +00:00
Note that sample rates are multiplicative:
If a signal is created with 20% sampling and a handler handles 50%
of given signals, then 10% of possible signals will be handled.
2024-04-15 07:57:40 +00:00
This multiplicative rate is helpfully reflected in each signal's final
2024-04-12 12:57:24 +00:00
`:sample-rate` value.
2024-04-12 12:57:24 +00:00
For a visual flowchart, see: Ref. <https://www.taoensso.com/telemere/flow>
For more info:
2024-04-15 07:57:40 +00:00
- On signal filters, see: `help:signal-filters` docstring
- On handler filters, see: `help:signal-handlers` docstring
If anything is unclear, please ping me (@ptaoussanis) so that I can
improve these docs!