-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: refactor EventsRouter bettween sync and async router
chore: quality fixes docs: improve docstrings for handlers and new events routers docs: improve docstrings for event bus workflow
- Loading branch information
Showing
8 changed files
with
566 additions
and
138 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
""" | ||
Events router to send events to hosts via celery. | ||
This events router will trigger a celery task to send the events to the | ||
configured hosts. | ||
""" | ||
from event_routing_backends.backends.events_router import EventsRouter | ||
from event_routing_backends.tasks import dispatch_bulk_events, dispatch_event, dispatch_event_persistent | ||
|
||
|
||
class AsyncEventsRouter(EventsRouter): | ||
""" | ||
Router to send events to hosts via celery using requests library. | ||
""" | ||
|
||
def dispatch_event(self, event_name, updated_event, router_type, host_configurations): | ||
""" | ||
Dispatch the event to the configured router. | ||
Arguments: | ||
event_name (str): name of the original event. | ||
updated_event (dict): processed event dictionary | ||
router_type (str): type of the router | ||
host_configurations (dict): host configurations dict | ||
""" | ||
dispatch_event.delay(event_name, updated_event, router_type, host_configurations) | ||
|
||
def dispatch_bulk_events(self, events, router_type, host_configurations): | ||
""" | ||
Dispatch the a list of events to the configured router in bulk. | ||
Arguments: | ||
events (list[dict]): list of processed event dictionaries | ||
router_type (str): type of the router | ||
host_configurations (dict): host configurations dict | ||
""" | ||
dispatch_bulk_events.delay(events, router_type, host_configurations) | ||
|
||
def dispatch_event_persistent(self, event_name, updated_event, router_type, host_configurations): | ||
""" | ||
Dispatch the event to the configured router providing persistent storage. | ||
Arguments: | ||
event_name (str): name of the original event. | ||
updated_event (dict): processed event dictionary | ||
router_type (str): type of the router | ||
host_configurations (dict): host configurations dict | ||
""" | ||
dispatch_event_persistent.delay(event_name, updated_event, router_type, host_configurations) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
""" | ||
Events router to send events to hosts in sync mode. | ||
This router is expected to be used with the event bus, which | ||
can be configured to use this router to send events to hosts | ||
in the same thread as it process the events. | ||
""" | ||
from event_routing_backends.backends.events_router import EventsRouter | ||
from event_routing_backends.tasks import bulk_send_events, send_event | ||
|
||
|
||
class SyncEventsRouter(EventsRouter): | ||
""" | ||
Router to send events to hosts using requests library. | ||
""" | ||
|
||
def dispatch_event(self, event_name, updated_event, router_type, host_configurations): | ||
""" | ||
Dispatch the event to the configured router. | ||
Arguments: | ||
event_name (str): name of the original event. | ||
updated_event (dict): processed event dictionary | ||
router_type (str): type of the router | ||
host_configurations (dict): host configurations dict | ||
""" | ||
send_event(None, event_name, updated_event, router_type, host_configurations) | ||
|
||
def dispatch_bulk_events(self, events, router_type, host_configurations): | ||
""" | ||
Dispatch the a list of events to the configured router in bulk. | ||
Arguments: | ||
events (list[dict]): list of processed event dictionaries | ||
router_type (str): type of the router | ||
host_configurations (dict): host configurations dict | ||
""" | ||
bulk_send_events(None, events, router_type, host_configurations) | ||
|
||
def dispatch_event_persistent(self, event_name, updated_event, router_type, host_configurations): | ||
""" | ||
Dispatch the event to the configured router providing persistent storage. | ||
In this case, the event bus is expected to provide the persistent storage layer. | ||
Arguments: | ||
event_name (str): name of the original event. | ||
updated_event (dict): processed event dictionary | ||
router_type (str): type of the router | ||
host_configurations (dict): host configurations dict | ||
""" | ||
self.dispatch_event(event_name, updated_event, router_type, host_configurations) |
Oops, something went wrong.