@workflow(
id="immediate-handler",
trigger_on_event="order/created"
)
async def immediate_handler(ctx: WorkflowContext, payload: EventPayload):
"""Process each order immediately."""
order_id = payload.data["order_id"]
await ctx.step.run("send_confirmation", send_order_confirmation, order_id)
return {"handler": "immediate"}
@workflow(
id="batched-handler",
trigger_on_event="order/created",
batch_size=5,
batch_timeout_seconds=60
)
async def batched_handler(ctx: WorkflowContext, payload: BatchEventPayload):
"""Process orders in batches for analytics."""
events = payload.events
order_ids = [e.data["order_id"] for e in events]
await ctx.step.run("batch_analytics", update_analytics, order_ids)
return {"handler": "batched", "count": len(events)}