Skip to content

v0.44.0

Choose a tag to compare

@nodejsmith-release-please nodejsmith-release-please released this 16 Jun 16:02
41b935d

Breaking Changes

  • App-tier bus handlers now default to single execution mode — a trigger that fires while a prior invocation of the same handler is still running is dropped instead of running concurrently. Apps that rely on overlapping invocations must pass mode="parallel" on the registration (e.g. self.bus.on_state_change(..., mode="parallel")). Framework-tier listeners are unchanged and still default to parallel. (#1028)

Execution Overlap Modes

  • Bus handlers gain per-listener overlap modes — single (drop the re-fire), restart (cancel and replace), queued (serialize), and parallel (run concurrently) — controlling what happens when a handler is re-triggered while still running. App-tier defaults to single; framework-tier to parallel. (#1028)
  • Scheduled jobs gain the same overlap modes via a mode= parameter on run_in, run_once, run_every, run_daily, and run_cron. Framework jobs default to parallel, app jobs to single. (#1046)

Event Loop Protection

  • Sync handlers now run on a dedicated, isolated thread pool, so a slow or timed-out handler can no longer starve framework internals like logging and the database. Tune the pool with the new sync_executor_max_workers config. (#1042)
  • Blocking I/O run directly on the shared event loop (e.g. time.sleep, requests.get, blocking open().read()) is now detected, attributed to the offending app, and logged. Control it with blocking_io_behavior globally or per-app, or set it to "ignore" to disable. (#1040)