Django完成异步工具——celery
生活随笔
收集整理的這篇文章主要介紹了
Django完成异步工具——celery
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 情景:用戶發起request,并等待response返回。在本些views中,可能需要執行一段耗時的程序,那么用戶就會等待很長時間,造成不好的用戶體驗,比如發送郵件、手機驗證碼等
- 使用celery后,情況就不一樣了
- 解決:將耗時的程序放到celery中執行
- 點擊查看celery官方網站
- 點擊查看celery中文文檔
- celery名詞
- 任務task:就是一個Python函數
- 隊列queue:將需要執行的任務加入到隊列中
- 工人worker:在一個新進程中,負責執行隊列中的任務
- 代理人broker:負責調度,在布置環境中使用redis
- 安裝包
示例
- 在booktest/views.py文件中創建視圖sayhello
- 在booktest/urls.py中配置
- 啟動服務器,在瀏覽器中輸入如下網址
- 在終端中效果如下圖,兩次輸出之間等待一段時間才會返回結果
- 在test6/settings.py中安裝
- 在test6/settings.py文件中配置代理和任務模塊
- 在booktest/目錄下創建task.py文件
- 打開booktest/views.py文件,修改sayhello視圖如下
- 執行遷移生成celery需要的數據表
- 生成表如下
- 啟動Redis,如果已經啟動則不需要啟動
- 啟動worker
- 啟動成功后提示如下圖
- 打開新終端,進入虛擬環境,啟動服務器,刷新瀏覽器
- 在舊終端中兩個輸出間仍有時間間隔
- 運行完成后如下圖,注意兩個終端中的時間,服務器的響應是立即返回的
- 打開booktest/task.py文件,修改為發送郵件的代碼,就可以實現無阻塞發送郵件
總結
以上是生活随笔為你收集整理的Django完成异步工具——celery的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从内置函数看 Python 的设计思想:
- 下一篇: 微信小程序在当前页面设置其他页面的数据