1. 程式人生 > >What’s new in Channels 2 摘譯

What’s new in Channels 2 摘譯

Django項目 新版 olt chan 代碼 調研 新版本 targe 啟用

最近準備在一個老Django項目上啟用Channels,Channels於今年2月2日發布2.0版本,這個版本包含很多不向前兼容的特性,為了新特性調研的需要,也為了方便社區,我把新版本的What‘s New摘要漢化一下。

一、依賴要求:因為對Py3標準庫asyncio的依賴,Channels必須3.5以上的版本,有些依賴甚至需要3.5.2以上的版本

二、設計概念體系發生巨大變化:

2.1、通道層和進程:v1網絡前端和應用邏輯通過通道層跨進程消息事件通信,v2 Django Code通過線程池在一個進程內執行,把網絡前端和應用邏輯結合在一起。

2.2、應用實例:面向一個Socket的所有處理在一個進程類執行,Channel層只用來消息廣播,比如聊天消息在不同應用實例之間的傳遞。

2.3、新的消費者:V2采用一種烏龜馱烏龜一直向下的設計,系統的每個方面都設計成一個包含消費者和路由系統的ASGI應用。

2.5、完全異步:除了View和ORM,剩下的絕大多數都是異步代碼

三、被移除的組件:綁定框架被完全移除

四、如何升級你的代碼

4.1、舊的routing和消費者函數都沒戲了,必須來新的基於類的消費者和ProtocolTypeRouter定義方式

4.2、channel_session 和 enforce_ordering不在需要

4.3、Auth機制由裝飾器變成AuthMiddlewareStack配置,包括Session在內的Message讀取方式變成self.scope["name"]

4.4、通道層不再是必須,除channels_redis之外的都被異步調度直接取代,通道層的配置和使用方式也發生變化

4.5、Groups對象不在存在,其特性機制被幾個函數取代

4.6、Delay Server可用異步消費者取代

4.7、測試框架已經完全被重寫成異步的。

What’s new in Channels 2 摘譯