Event Decorators
Metaflow provides two decorators for event-driven workflows:@trigger: Trigger flows based on custom events@trigger_on_finish: Trigger flows when upstream flows complete
Triggering on Custom Events
The@trigger decorator allows flows to be triggered by custom events.
Basic Event Triggering
data.updated event is emitted.
Multiple Events
Trigger on any of multiple events:Event Parameter Mapping
Map event payload fields to flow parameters:Simplified Parameter Mapping
For parameters with matching names:Triggering on Flow Completion
The@trigger_on_finish decorator creates flow dependencies where one flow automatically triggers when another completes successfully.
Basic Flow Dependencies
Multiple Upstream Dependencies
Trigger when any of multiple upstream flows complete:Project-Aware Dependencies
When using@project, dependencies respect project namespaces:
Cross-Project Dependencies
Reference flows in different projects or branches:prod- productionuser.<username>- user branchtest.<name>- test branchprod.staging- production staging
Accessing Trigger Information
Inside triggered flows, access trigger metadata:Namespaced Events
Usenamespaced_event_name to automatically scope events to projects:
Deploy-Time Event Configuration
Compute event names dynamically at deploy time:Complex Event Scenarios
Multi-Stage Pipeline
Fan-Out/Fan-In Pattern
Testing Event-Driven Flows
Testing with —trigger Option
Test@trigger_on_finish locally:
Manual Event Testing
For custom events, you’ll need to emit events through your orchestrator’s event system (e.g., Argo Events, AWS EventBridge).Platform-Specific Features
Argo Workflows + Argo Events
Argo Workflows uses Argo Events for event handling:AWS Step Functions + EventBridge
Step Functions uses Amazon EventBridge:@trigger_on_finish decorators.
Best Practices
Design for idempotency
Design for idempotency
Event-driven flows may be triggered multiple times. Ensure your flows can handle duplicate triggers safely.
Handle missing upstream data
Handle missing upstream data
Always check if upstream artifacts exist before accessing them:
Use project namespacing
Use project namespacing
Use
@project and namespaced_event_name to avoid event name collisions across teams.Monitor event flow
Monitor event flow
Set up monitoring to track event delivery and flow triggering success rates.
Document dependencies
Document dependencies
Maintain documentation of flow dependencies to understand the execution graph.
Troubleshooting
Flow Not Triggering
- Check event names: Ensure event names match exactly
- Verify deployment: Flow must be deployed, not just run locally
- Check permissions: Ensure orchestrator has permissions to trigger flows
- Review logs: Check orchestrator logs for event delivery issues
Parameter Mapping Issues
- Verify parameter defaults: All parameters need defaults for event flows
- Check field names: Event payload fields must match parameter mapping
- Review event payload: Log actual event payloads to verify structure
Next Steps
Scheduling
Combine events with scheduled flows
Monitoring
Monitor event-driven pipelines
Orchestrators
Platform-specific event features
