Nexios Events
Nexios provides a comprehensive event system that enables communication between different parts of your application. The event system is designed to be:
Flexible: Supports synchronous and asynchronous operations
Scalable: Manages thousands of events efficiently
Thread-safe: Safe for use in multi-threaded environments
Feature-rich: Includes priorities, namespaces, weak references, and more
Core Concepts
Events
An Event
represents a specific occurrence in your application that other parts can listen for and respond to. Each event has:
A unique name
A set of listeners (callbacks)
Configuration options (priority, max listeners, etc.)
EventEmitter
The EventEmitter
class serves as a central hub for creating and managing events. It provides methods to:
Register and remove listeners
Trigger events
Organize events hierarchically using namespaces
Event Priorities
Listeners can be assigned one of five priority levels:
EventPriority.HIGHEST
EventPriority.HIGH
EventPriority.NORMAL
(default)EventPriority.LOW
EventPriority.LOWEST
Listeners are executed in priority order (highest first) when an event is triggered.
Event Phases
Events propagate through three phases:
Capturing Phase: From parent to child
Target Phase: On the event target
Bubbling Phase: From child to parent
Basic Usage
Creating and Triggering Events
One-time Listeners
Event Namespaces
Advanced Features
Asynchronous Events
Weak References
Event Metrics
Event History
Error Handling
The event system provides several specialized exceptions:
EventError
: Base class for all event-related errorsListenerAlreadyRegisteredError
: Raised when adding a duplicate listenerMaxListenersExceededError
: Raised when exceeding max listenersEventCancelledError
: Raised when event propagation is cancelled
Performance Considerations
Benchmarking
EventEmitter Methods
event(name)
: Get or create an eventnamespace(name)
: Create a namespaceon(event_name, func)
: Register a listeneronce(event_name, func)
: Register a one-time listeneremit(event_name, *args, **kwargs)
: Trigger an eventremove_listener(event_name, func)
: Remove a specific listenerremove_all_listeners(event_name)
: Remove all listeners for an event
Event Methods
listen(func)
: Register a listeneronce(func)
: Register a one-time listenertrigger(*args, **kwargs)
: Fire the eventremove_listener(func)
: Remove a specific listenerremove_all_listeners()
: Remove all listenersget_metrics()
: Get performance metricsget_history()
: Get event trigger historycancel()
: Cancel event propagationprevent_default()
: Prevent default behavior
AsyncEventEmitter Methods
emit_async()
: Asynchronous version of emitschedule_emit()
: Schedule an event to be triggeredshutdown()
: Clean up resources
Examples
Complex Event Hierarchy
Event Cancellation
Mixed Sync/Async Listeners
Last updated