-
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.
Merge pull request #361 from openedx/cag/add-consumer-for-tracking-logs
feat: allow to route events in sync
- Loading branch information
Showing
18 changed files
with
1,009 additions
and
392 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
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 |
---|---|---|
|
@@ -2,4 +2,4 @@ | |
Various backends for receiving edX LMS events.. | ||
""" | ||
|
||
__version__ = '8.0.0' | ||
__version__ = '8.1.0' |
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.