Signals allow you to decouple apps by sending notifications when activities in the core framework or other Flask extensions occur. In a nutshell, signals allow particular senders to alert subscribers to an event. Flask comes with a few signals, and other extensions may add more. Keep in mind that signals are meant to alert subscribers and should not be used to urge them to change their data. You'll notice that several signals appear to accomplish the same thing as some of the built-in decorators (for example, request started looks a lot like before request()). There are, however, variances in how they operate. The before request() handler, for example, is called in a certain order and can cancel a request by returning a response early. All signal handlers, on the other hand, run in an indeterminate order and do not affect any data. Signals have a significant advantage over handlers in that you can safely subscribe to them for a fraction of a second. These temporary subscriptions are useful for things like unit testing. If you want to know which templates were rendered as part of a request, you can use signals to accomplish so. Creating Signals: You can use the blinker library directly if you wish to use signals in your own application. Named signals in a custom Namespace are the most prevalent use case. Most of the time, this is what is suggested: from blinker import Namespace[Text Wrapping Break]my_signals = Namespace() You can now generate new signals such as this: model_saved = my_signals.signal('model-saved') The signal's name makes it stand out and makes debugging easier. The name attribute gives you access to the signal's name.