$30 off During Our Annual Pro Sale. View Details »

Real Time Web with Django Channels

Real Time Web with Django Channels

The talk will introduces the Channels concept, explains how they work and shows a few examples of what’s now possible (or plain easier) to do with them.

Senko Rašić

November 08, 2016
Tweet

More Decks by Senko Rašić

Other Decks in Programming

Transcript

  1. Real Time Web
    With
    Django Channels
    Senko Rašić
    [email protected]

    View Slide

  2. JOIN ME, AND TOGETHER
    WE WILL RULE THE GALAXY

    View Slide

  3. WSGI

    View Slide

  4. socket.io
    bro!

    View Slide

  5. View Slide

  6. Andrew Godwin

    View Slide

  7. Django Channels
    +
    ASGI

    View Slide

  8. Gunicorn
    uWSGI
    Django
    request
    response
    WSGI
    request
    response
    HTTP

    View Slide

  9. Daphne Django
    message
    message
    ASGI
    request
    response
    HTTP

    View Slide

  10. Daphne Django
    message
    message
    ASGI
    WSS upgrade
    WS frame
    HTTP
    WS frame
    WS frame
    WS frame
    message
    message
    message
    disconnect message

    View Slide

  11. Daphne
    Django
    message
    message
    ASGI
    WSS upgrade
    WS frame
    HTTP
    WS frame
    WS frame
    WS frame
    message
    message
    message
    disconnect message
    Django
    Django
    Django
    Django
    Django

    View Slide

  12. Daphne
    Django
    worker
    ASGI
    HTTP
    redis
    Django
    worker
    Django
    worker

    View Slide

  13. Daphne
    Django
    worker
    ASGI
    HTTP
    redis
    Django
    worker
    Django
    worker
    Daphne
    HTTP

    View Slide

  14. Interface
    Server
    Worker
    server
    ASGI
    HTTP
    Channel
    Layer
    Worker
    server
    Worker
    server
    Interface
    Server
    HTTP
    ASGI
    ASGI
    ASGI
    ASGI

    View Slide

  15. Interface
    Server
    Consumer
    (View)
    HTTP
    GET
    ASGI
    http.request
    Interface
    Server
    HTTP
    response
    ASGI
    http.response!abc
    HTTP request handling

    View Slide

  16. Interface
    Server
    Consumer
    WS
    socket
    ASGI
    websocket.receive
    Interface
    Server
    WS
    socket1
    ASGI
    websocket.send!abc
    WebSockets handling
    Interface
    Server
    WS
    socket2
    ASGI
    websocket.send!def

    View Slide

  17. View
    Consumer
    ASGI
    ASGI jobqueue Consumer
    Consumer
    ASGI
    ASGI
    Bonus: task queue
    ASGI

    View Slide

  18. DEMO TIME!

    View Slide

  19. That’s all, Folks!
    See also:
    Reinventing Django for
    the Real-Time Web
    https://www.youtube.com/watch?v=2sEPipctTxw

    View Slide

  20. Image credits:
    Darth Vader - https://www.pinterest.com/jaclynnpetersen/star-wars/
    Trabant - https://en.wikipedia.org/wiki/Trabant
    Rube Goldberg Machine - https://en.wikipedia.org/wiki/Rube_Goldberg_machine
    Meditating Monk - https://www.flickr.com/photos/aigle_dore/24065839299
    Flying DeLorean - http://mugen.wikia.com/wiki/Delorean

    View Slide