Changes between Version 1 and Version 2 of AsyncProject


Ignore:
Timestamp:
Aug 1, 2019, 6:30:36 AM (5 years ago)
Author:
Andrew Godwin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AsyncProject

    v1 v2  
    11The Async Project is the effort to get Django async-compatible as part of the 3.x series. It's one of the biggest overhauls of Django in its history, and this page is the hub for what's happening, and how you can help.
    22
    3 == Projects
     3== Current status
    44
    5 * **ASGI Support**: Having Django speak the ASGI (async successor to WSGI) protocol. This is landed in 3.0.
    6 * **Async views**: Allowing for {{{async def}}} views.
    7 * **ORM**: Making the ORM async-capable.
     5Complete:
     6* **ASGI Support**: Having Django speak the ASGI (async successor to WSGI) protocol
     7
     8In progress:
     9* **Async views**: Allowing for {{{async def}}} views
     10
     11Planned/Future:
     12* **ORM**: Making the ORM async-capable
     13* **Templating**: Making templates async-capable
     14* **Cache**: Async cache abstraction (get/set/etc.)
     15* **Test Client**: Better async support for tests
     16
     17Other areas of Django also need attention; this is by no means the full set of projects that need tackling.
     18
     19== How to help
     20
     21These are the areas we currently need help in; if you're interested, please email andrew@aeracode.org (we'll get a better way of organizing this done soon).
     22
     23=== Test failure chasing
     24
     25The current async views branch runs code mostly successfully, but some Django tests fail, occasionally in odd ways. There's a lot of valuable work in taking a test failure and working out the root cause so it can be fixed in the async views patch. This is especially important to trace down places where database connections are accessed from more than one thread (which is invalid, but happens with incorrect use of sync code in an async thread).
     26
     27=== Benchmarking
     28
     29Performance regressions are the one thing we want to avoid, and so the djangobench (https://github.com/django/djangobench) project needs modifying to add an ASGI benchmark path and the ability to compare sync-via-sync, sync-via-async and async-via-async paths through Django, as well as between 2.2 and 3.0/3.1 with the async views changes applied.
     30
     31=== Documentation
     32
     33We need a significant amount of new documentation about asynchronous code and when it makes sense (and cruicially, when not to use it). This could potentially take the form of a new tutorial section, more narrative-style documentation, as well as more notes about Django's internals and how they are changed.
     34
     35=== Test writing
     36
     37We need some more tests written for the async support already in Django 3.0, as well as the asynchronous view code that's currently in a branch. Ideally we want tests for both the sync and async paths, and more tests that run things in parallel to verify there's no concurrency issues.
     38
     39=== Example projects
     40
     41A well-documented example project with a good use of async could be a very valuable resource for people to learn from.
     42
     43=== ORM/Template/Cache project lead
     44
     45If you're experienced enough in large codebases and async code, these projects can each be tackled and run separately and we'd benefit a lot from doing them in parallel. Templating and the ORM especially need research and prototyping as a first phase before we work out what the best solution is.
     46
Back to Top