Dagster ⇄ Pulse
Dagster owns the job/asset orchestration; Pulse is the real-time stream-processing op it calls. Repo example: examples/dagster-pulse-bridge/ — validated end-to-end on Dagster 1.13.13, in-process (execute_in_process, no daemon/webserver).
@job order_job: make_order → score_via_pulse (@op) → decide
The op does the universal two calls:
POST /api/pulse/x/order-scoring/in
GET /api/pulse/events/order-scoring.score.out
Run it
pulse server start --dev
mkdir app && cp pulse.yaml app/ && (cd app && pulse deploy .) # stands up order-scoring
pip install dagster requests
python dagster_job.py
Validated output
amount= 2500 -> high_value=True decision=escalate
amount= 300 -> high_value=False decision=auto-approve
Dagster keeps the asset lineage and scheduling; Pulse keeps the stream state. Change the score stage's operators — the job graph is untouched.