Easy way to build a real time and asynchronous web or app with Django Channels

摘要

Django 是 Python 其中一個非常流行的網站框架,它採取傳統的視圖做法並且圍繞在:一個請求進來,Django 被觸發並服務,接著回應並送出,然後 Django 繼續等待。但現在的網站除了使用這種傳統的輪詢(polling)方法外還包含 WebSocket, HTTP2 等等技術,這也讓現代網站可以透過這些技術建造一個真正的 Real-time web。而 Channels 是讓 Django 具備這些技術的套件之一。

Channels 是一個官方維護的套件,未來預計會整合進入 Django framework(不過原先 Django 2 整合計畫確定延遲)。Channels 1 在 2017 年初正式發佈,近期更新的 Channels 2 則做了大量的原始碼改寫與架構變動:如完整的 asynchronous 但採用 Python's asyncio library,因此 Channels 2 無法向下支援 Python 3.4 與 Python 2.7 之前的版本,ASGI 作為一致性的介面(像 WSGI,因此不必部署兩套服務器)以及重新定位 Channels,是給開發者一個簡單解決問題的方案。因此這場演講將會著重在分享 Channels 改變的部分和其細節(說明 1 與 2 差異)與如何“建置”一個 Django Channels 的 web 與 app。

說明

Python 世界裡,開發一個 WebSocket 的網站已經有許多很棒的框架以及套件,例如 Twisted、Tornado、uWSGI,這些框架與套件究竟如何實現?Django Channels 其帶來簡單易用的特點為何?新版 Channels 2 的非同步原理是什麼?它會帶來何種效益?要如何去開發與使用? 在這篇演講中,將會環繞 WebSockets, asynchronous 與 channels 在這三個議題,最後能夠輕鬆建立一個 Django Channels web 或是 APP。

Slides

https://speakerdeck.com/chairco/pycontw-2018-easy-way-to-build-a-real-time-and-asynchronous-web-or-app-with-django-channels

講者

Jason

Hi, 我是 Jason。