Skip to content

2. Sub Handler

Subscribe a handler and wait for its event result.

Source

"""Subscribe a handler and wait for its event result."""

import asyncio

from fastsprout.events import Event, EventBus, EventState, sub

bus = EventBus()


class HeroEvent(Event):
    name: str
    power: str


@sub(HeroEvent, bus=bus)
async def process_hero_event(e: HeroEvent) -> None:
    print("HeroEvent:", e)
    return None


async def main():
    event_state: EventState[HeroEvent] = await bus.publish(
        HeroEvent(name="Batman", power="money")
    )

    event_result = await event_state.wait()
    print("Event Result:", event_result)


asyncio.run(main())

Result

HeroEvent: name='Batman' power='money'
Event Result: EventResult(state=EventState(event=HeroEvent(name='Batman', power='money')), values=[], pending=0, errors=[])