DEP0009 : La proposition d’Andrew Godwin d’ajouter le support asynchrone à Django a été acceptée en Juillet. En quoi consiste-t-elle ? Que va-t-elle changer ? Et comment participer à la transition ?
disque) Des cycles CPU (calculs) Python délègue à l'OS (appel système) Python parle au CPU directement Python sait le paralléliser dans des threads Python ne sait pas le paralléliser ( GIL ) >90%* <10%* *au doigt mouillé
sans interruption Quand elle lance un IO, elle s'interrompt, et laisse la place a une autre partie CPU L'IO s'exécute en tâche de fond, quand il est fini, il indique que le CPU peut reprendre Boucle d'évènements CPU I/O A A A A A B B B C C C
C C A a oublié d'appeler ses I/O en asynchrones A A A B C C A C L'exemple de tout a l'heure CPU I/O A A A A A B B B C C C B lance une tâche gourmande en CPU
Serveur async Le plan ASGI/WSGI Server View Middleware Handler URL router Form Template ORM From "Just Add Await: Retrofitting Async Into Django" - Andrew Godwin (PyCon AU 2019) Phase 4+ le reste
= await loop.run_in_executor( ThreadPoolExecutor(), sync_func ) a = await async_func() Appeler du code: Synchrone Asynchrone Depuis du code: Synchrone Asynchrone
Serveur async Le plan ASGI/WSGI Server View Middleware Handler URL router Form Template ORM From "Just Add Await: Retrofitting Async Into Django" - Andrew Godwin (PyCon AU 2019) Phase 4+ le reste
Serveur async Le plan ASGI/WSGI Server View Middleware Handler URL router Form Template ORM From "Just Add Await: Retrofitting Async Into Django" - Andrew Godwin (PyCon AU 2019) Phase 4+ le reste
Serveur async Le plan ASGI/WSGI Server View Middleware Handler URL router Form Template ORM From "Just Add Await: Retrofitting Async Into Django" - Andrew Godwin (PyCon AU 2019) Phase 4+ le reste