FastAPI Event Emitter¶
🏗️ Work in Progress
This section is currently being rebuilt.
The FastAPIEventEmitter
provides a powerful way to build reactive FastAPI
applications using an event-driven architecture. It leverages FastAPI's asynchronous BackgroundTasks
to handle events outside the request-response cycle.
What is it?¶
The FastAPIEventEmitter
is a concrete implementation of the EventEmitter
class that utilizes
FastAPI's BackgroundTasks
for event handling. It provides a convenient way to incorporate event-driven
functionality into FastAPI applications, allowing you to implement tasks such as sending emails in a
decoupled and asynchronous manner.
How it Works¶
The FastAPIEventEmitter
handles the emission and processing of events by utilizing the FastAPI's
background tasks queue. When an event is emitted, its execution is scheduled into the FastAPI's background
tasks to run asynchronously after the response is sent.
Usage¶
To start using the FastAPIEventEmitter
, follow these steps:
-
Install Dependencies: Ensure FastAPI and Pyventus are installed.
-
Dependency injection and usage: The
FastAPIEventEmitter
integrates fully withFastAPI
and can be used in routes or elsewhere via dependency injection. As an example, we'll create a simpleFastAPI
app to simulate a non-blocking email notification. Create amain.py
file and add the following code: -
Run the server: Start the app with:
Open your browser at http://127.0.0.1:8000/. You will see the JSON response as:
You'll also be able to see the outputs of the functions in the console logs as follows:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [28720] INFO: Started server process [28722] INFO: Waiting for application startup. INFO: Application startup complete. INFO: 127.0.0.1:57926 - "GET / HTTP/1.1" 200 OK Sending email to: email@pyventus.com Email sent successfully!
Recap¶
As we have seen, the FastAPIEventEmitter
allows building reactive FastAPI
apps using an event-driven
architecture. By leveraging background tasks, events can be emitted from routes and processed independently without
blocking responses. This delivers asynchronous and non-blocking behavior for tasks like emails, jobs, streams and
more. The emitter integrates seamlessly with FastAPI
via dependency injection.