Django 3.0 發布,開始支持異步功能

2021-01-08 開源中國

Django 3.0 發布了(dev 版本),此版本帶來了一些新特性,其中最值得關注的應當是其開始支持異步功能。

此前我們報導過,有草案提出要讓 Django 支持異步。聚集於 HTTP 中間件視圖和 ORM,開發者要在 Django 中添加異步支持,同時維護對同步 Python 的支持,並且將完全向後兼容。

該設想最終會替換掉 Django 中的大多數阻塞部分,包括 Session、Auth、ORM 與 Handlers 等,使其原生支持異步。而同步 API 將繼續存在並得到完全支持,其中一些最終將轉變為原生異步代碼的同步包裝器。

ASGI 模式將 Django 作為原生異步應用程式運行,原有的 WSGI 模式將圍繞每個 Django 調用運行單個事件循環,以使異步處理層與同步伺服器兼容。

在這個改造的過程中,每個特性都會經歷以下三個實現階段:

Sync-only,只支持同步,也就是當前的情況 Sync-native,原生同步,同時帶有異步封裝器 Async-native,原生異步,同時帶同步封裝器

Django 3.0 開始提供運行 ASGI 應用支持,讓 Django 逐漸具備異步功能。做了這一改動後,Django 現在會感知到異步事件循環,並將阻止從異步上下文調用標記為「異步不安全」的代碼(例如 ORM 操作),如果開發者之前使用的是異步代碼,則可能會觸發。如果看到 SynchronousOnlyOperation 錯誤,可以仔細檢查代碼並將資料庫操作移到同步子線程中。

其它方面,Django 現在支持 MariaDB 10.1 及更高版本;新的 ExclusionConstraint 類可以在 PostgreSQL 上添加排除約束;輸出 BooleanField 的表達式現在可以直接在 QuerySet 過濾器中使用,而無需先註解然後對註解進行過濾;自定義枚舉類型 TextChoices、IntegerChoices 和 Choices 現在可用作定義 Field.choices 的方法。

此外還有一些小改動,詳情查看更新說明:

需要注意的是,Django 3.0 支持 Python 3.6、3.7 與 3.8,Django 2.2.x 系列是最後一個支持 Python 3.5 的系列。官方同時也建議第三方應用作者放棄對 Django 2.2 之前的所有版本的支持。

相關焦點

  • django-adminlte-ui 1.3.0 發布, 基於adminlte的Django後臺模板
    django-adminlte-ui 1.3.0 發布啦1.3.0該版本新增了自定義菜單及擴展widgets,歡迎測試。
  • python-開始django吧!
    Django是Python Web開發很火的開源項目,框架功能較齊全,而且項目也一直都在更新優化,很值得一用。目前最新穩定版本是2.0.4,最新的lts版本是1.11。 安裝可以通過pip就可以安裝django了:pip install django或者pip install django==1.11.9 #指定版本 創建項目安裝完後會有一個django-admin的腳本可以創建項目和應用就可以開始編程
  • Django2.0 工具集(5)--3分鐘完成驗證碼功能
    為防止攻擊,我們在用戶登錄,註冊時普遍使用驗證碼,使用 Django-simple-captcha 可以讓你在3分鐘實現Web方式,5分鐘Ajax方式的認證碼,並且其認證方式可以採用簡單數學計算求解,調整字符顏色和雜音,甚至語音,加大機器人打碼難度。
  • Django 教程——Django 基礎
    我們為什麼選中DjangoDjango是一個快速的web開發框架,可用於在短時間內開發完整的web應用程式在Django框架中切換資料庫非常容易它有內置的管理界面,這使得工作很容易Django是一個功能完備的框架,它不需要其他任何東西它有數以千計的額外軟體包它是可擴展的Django架構
  • Django 1.5發布,Python 3開始進入主流?
    Python Web框架Django北京時間2月27日發布了1.5版(已經可以下載)。距離上次1.4發布不到一年,官方網站表示,這是一個重要的版本更新。這一點從官方博客的長度有所增加、內容更加詳細也能看出來。
  • Django實戰:與Chart.js聯用做出精美的圖表
    當我們放置時,我們直接在JavaScript代碼中注入來自伺服器的變量,如{{ data|safe}}上面的代碼展示效果如下所示:示例2:使用Ajax的條形圖如標題所示,我們現在將使用異步調用來繪製條形圖。
  • AjaxUpload v1.3.0 發布,Javascript 異步上傳插件
    AjaxUpload v1.3.0 已發布。
  • 最新AMD顯卡驅動開始支持異步空間扭曲渲染和異步二次投影
    AMD推出了最新的Radeon Software Crimson ReLive 17.4. 1 驅動程序,允許Radeon R9 Fury系列(包括Fury X)、R9390 系列和R9290 系列支持異步空間扭曲技術。
  • Python3.7開發Django2.2 Web系統從零開始--2.0 驗證碼
    1在Django框架中,你可以自己寫一個生成驗證碼的類,也可以別人已經寫好並且開源的第3方驗證碼庫:captcha。不懂得偷懶的程序猿不是好工程師,在能滿足需求的前期下,考慮先用現成的。要讓django項目支持captcha,請打開【終端】,輸入:pip3 install django-simple-captcha命令。
  • Django2:Web項目開發入門筆記(3)
    此時,我們打開瀏覽器,輸入地址「http://127.0.0.1:8000/」,就能夠看到Django安裝成功的提示頁面。不過,這僅僅是Django的頁面內容,如果想用Django開發一個真正可以訪問的Web應用,我們需要在項目中創建一個新的應用。創建應用可以通過命令行進行創建。
  • Django 2.0發布:最後一個支持Python 3.4的版本
    ­  流行 Python Web 開發框架 Django 釋出了 2.0 版本。主要變化包括:停止支持 Python 2 系列,Django 1.11.x 是支持 Python 2.7 的最後版本,Django 2.0 支持 Python 3.4、3.5 和 3.6,其中 Python 3.4 將於 2019 年 3 月結束支持,因此 Django 2.0 也將是最後一個支持 Python 3.4 的版本。
  • Django 1.11.3 發布,Python 的 Web 框架
    Django 1.11.3 已發布,該版本修復了 1.11.2 中的一些 bug ,具體如下:Removed an incorrect deprecation warning about a missing renderer argument if a Widget.render() method accepts **kwargsFixed a regression
  • Python3.7開發Django2.2 Web系統從零開始--1.7 登錄
    說來好多基礎的內容,這次來點實用的內容—實現登錄功能,主要熟悉一下的表單的應用。用到的是HTML基礎的控制項:文本、密碼和提交按鈕。如果對Html不熟的話,建議你先了解一下。1打開index.html文件,隨意輸入一些表單控制項,請注意文件裡的{% csrf_token %},它是防止CSRF 攻擊用的。
  • Django官方為什麼沒有標準項目結構
    \> django-admin startproject hello-worldCommandError: 'hello-world' is not a valid project name. Please make sure the name is a valid identifier.startproject不支持直接創建帶短橫線的項目名。
  • Django2:Web項目開發入門筆記(7)
    Django支持多種資料庫,包括默認的SQLite3以及MySQL和PostgreSQL等資料庫。使用哪一種資料庫需要在項目的settings.py中進行進行配置。如果使用默認的SQLite3資料庫,這個配置是Django創建項目時已經添加好的。
  • django 主題框架 simpleui 迎來 2.5 版本,增加眾多新功能
    simpleui是一個django admin的主題框架,採用vue和element-ui開發。在原有admin的基礎上,大量改價和美化,使其更加友好和便捷。 2.5版更新日誌:修復bug: fix #94 滾動條bug fix #108 頁面渲染閃爍 fix #104 #101 fix #IYLXG 支持搜索框無限級外接欄位名顯示 fix #IYOM5 菜單欄文本顯示bug fix #IXAXQ 內置的用戶和組編輯頁面樣式新增功能: 優化搜索區域邊距 列表頁增加工具條 增加頁頭 登錄頁按鈕增加loading 防止頁面嵌套 增加不同的
  • Apache Doris(incubating) 成功發布第一個版本0.9.0
    Doris 是什麼?兼容MySQL協議,支持包括多表Join、子查詢、窗口函數、CTE在內的豐富的SQL語法。支持諸多常見BI報表系統,能極大降低用戶的學習和遷移成本。2. 支持高並發點查詢和高吞吐的多維分析查詢場景。通過分區裁剪、預聚合、謂詞下推、向量化執行等技術,以及高效的列式存儲引擎即數據壓縮算法,滿足不同業務場景下的延遲和吞吐需求。3. 特有的數據預聚合功能。
  • 裡程碑,Apache ServiceComb 1.0.0 正式發布
    Apache ServiceComb 1.0.0 發布了,此次更新的部分包括 Apache ServiceComb Java-Chassis
  • 採用BC定時查詢方式的總線控制器異步通訊處理方案
    一個周期消息完成後立即開始新的周期。對任何相關子系統來說,對更新性消息而言,傳輸周期是異步的。 這一協議的應用降低了通信系統的負載和平均延遲時間,大大改善了子系統的性能。 實現更新數據傳輸機制(ISBC)的方法有兩種:異步服務請求方式和BC定時查詢方式。異步服務請求方式是當同步通訊段中的某一周期消息的狀態字的服務請求位因異步的服務而被置1時必需插入異步通訊。