RepoJournal
Django

@django

Python's batteries-included web framework

Keep up with Django in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

One email a day. Unsubscribe in one click.

Pick a date

Topics: Python Full archive →

The Wire · Showcase

DJANGO TIGHTENS THREADING FOR ASYNC ERROR HANDLING, GOVERNANCE FRAMEWORK SIMPLIFIED

By RepoJournal · Filed · About Django

Django patches a critical threading issue in async error response rendering that could cause database pool exhaustion and deadlock.

Carlton Gibson landed a fix that forces error response rendering onto request-specific connection threads instead of the event loop's default executor [1]. The change addresses a subtle but dangerous deadlock scenario: when database pooling is enabled or connections are permanently held open, exceptions dispatched to the wrong thread can exhaust the pool entirely. This is the kind of invisible failure that only surfaces under production load with async handlers and database-backed error pages.

On the ORM side, M0nd0R fixed inspectdb to use normalized field names in composite primary keys [2]. The tool was emitting column names from introspection before they were rewritten by normalize_col_name(), creating a mismatch between the generated model and the database schema. Jacob Walls also gated a GIS spatial index test on Oracle to prevent failures on databases that don't support it [3].

The governance desk shipped DEP 0019, a major consolidation of Django's technical governance structure [5]. This is a deliberate simplification: the stated goals were to make governance easier to enact, easier for others to understand, and more flexible with less procedure. This merges and streamlines the previous distributed governance model into a single source of truth. Meanwhile, the release checklists were updated to remove outdated advice about inspecting .po translation files [6].

Workflow permissions were also tightened across the benchmark suite [4], reflecting an organization-level security change requiring explicit write permissions on GitHub Actions workflows.

One email a day. Unsubscribe in one click.

Action items

References

  1. [1] Fixed #36027 -- Made error response rendering thread-sensitive. ↗ django/django
  2. [2] Fixed #37203 -- Used normalized field names in inspectdb composite primary keys. ↗ django/django
  3. [3] Refs #36694 -- Skipped GIS test needing spatial index on Oracle. ↗ django/django
  4. [4] Add explicit permission to benchmark.yml ↗ django/django-asv
  5. [5] DEP 0019 - Technical governance for the Django project ↗ django/deps
  6. [6] [checklists] Remove advice to inspect *.po files (#2732) django/djangoproject.com

Quick answers

What shipped in Django on July 24, 2026?
Django patches a critical threading issue in async error response rendering that could cause database pool exhaustion and deadlock. In total, 10 commits and 6 pull requests landed.
Who contributed to Django on July 24, 2026?
4 developers shipped this update, including Jacob Walls, carltongibson, M0nd0R, and Tim Schilling.
What were the notable Django updates?
Fixed #36027 -- Made error response rendering thread-sensitive, Fixed #37203 -- Used normalized field names in inspectdb composite primary keys, and Refs #36694 -- Skipped GIS test needing spatial index on Oracle.

More from @django

Daily updates, in your inbox

Follow Django

Keep up with Django in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

One email a day. Unsubscribe in one click. Read a past issue →

Elsewhere on the wire

Want every project, not just this one?