Prefect 3.7.2 - delete flow run automation and worker channel updates

   |   3 minute read   |   Using 575 words

Prefect 3.7.2 landed on May 23, 2026 with a new delete flow run automation action, a worker channel handshake protocol, and a batch of fixes around result storage and Apprise logging.

The full release notes and downloads are on the GitHub release page.

New automation action and worker channel work

The headline change is a new automation action that deletes a flow run, contributed in #22018. It also got added to the action types table in the docs in #22021. If you run a lot of short lived runs and need to keep the database lean, this is a cleaner option than a separate cleanup job.

Workers also pick up a new bidirectional channel. PR #22004 introduces a handshake and heartbeat between workers and the server, and #22026 starts delivering work-pool snapshots through that same channel. PR #22067 cleans up a bug where the ready frame returned worker_id=None. The REST fallback path now handles concurrent work-pool creation more gracefully too, see #21919. PR #22006 also fixes a check so the worker only adds processes to its process map after confirming they are actually alive.

Performance work

A few changes target hot paths most users will notice.

  • #21977 indexes triggers by their expect pattern. The previous find_interested_triggers did an O(n) scan over all triggers, which got slow when you had many of them.
  • #22060 caches variable reads within a single resolve_variables() call. Same variable referenced twice no longer fetches twice.
  • #22065 caches block document template resolution.
  • #22002 adds import performance guardrails, and #22019 makes the CodSpeed benchmarks measure true cold imports.

None of these change behavior. They trim wasted work.

Bug fixes worth a look

A small set of fixes deserve attention if you hit them in 3.7.1:

  • Azure blob result storage now overwrites on rewrite as expected (#22035). Earlier the second write would not replace the object.
  • Apprise logger level normalization is fixed (#21709).
  • The importlib_metadata backport was dropped in favor of stdlib importlib.metadata (#22012). One less optional dependency to install.
  • A malformed TOML settings file now produces a clean CLI error instead of a stack trace (#22030).
  • ZipBuilder storage keys are now truly content addressed (#22008).
  • Default result store existence checks are fixed in #22058.
  • Insufficient disk space when UI static files fail now surfaces an actionable error (#22057).
  • Lease renewal failures are now routed through the run logger (#22053), so the error shows up next to the run it relates to.
  • Missing block reference error messages are clearer in #21945.

Tests, docs, and cleanup

The 3.7.2 milestone has a lot of test stability work. Flaky integration tests like test_worker (#22010), test_flow_parameter_caching (#21973), and test_read_flow_runs_filters_by_start_time (#22024) were made deterministic. The clear_db pytest marker was flipped from opt out to opt in (#21918) so tests are now explicit about needing a clean database. Client test CI shards also got faster in #22003, and a few low risk import cycles were cleaned up in #22040.

On the docs side, the Airflow migration guide was updated to use prefect deploy and prefect.yaml instead of the old workflow (#22059), the stale prefect run CLI example was replaced with plain python (#22013), and several broken links on the work-pools and create-deployments pages were repaired in #22031 and #22061.

Where to get it

This is a stable release, not a prerelease, so pip install -U prefect==3.7.2 should work for most setups. Full compare view between 3.7.1 and 3.7.2 is on the changelog page.



denis256 at denis256.dev