亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 2 到 3 升級后 Django 初始頁面加載緩慢

Python 2 到 3 升級后 Django 初始頁面加載緩慢

喵喔喔 2022-06-02 11:27:53
我運行 Django 1.11.20。我剛剛(終于)從 Python 2.7 跳到了 3.7。我注意到自從升級到 Python 3 后,清除緩存后的第一頁加載非常慢。到目前為止,我的開發機器上只有我的 Python 3 環境,所以我在使用./manage.py runserver和FileBasedCache后端時遇到了這個問題。我不知道我是否會在生產堆棧(nginx、uwsgi、redis 等)上遇到同樣的事情。我正在使用 Django 調試工具欄,它給了我一些關于問題不是什么的提示,但我不確定我應該在哪里查看問題所在。在我的開發機器上的 Python 2.7 環境中,調試工具欄運行加載一個帶有空緩存的簡單頁面的時間是:中央處理器:4877.89 毫秒SQL 462.41 毫秒緩存:1154.54ms在我的開發機器上的 Python 3.7 環境中,調試工具欄運行加載具有空緩存的同一頁面的時間是:CPU:91661.71msSQL 350.44 毫秒緩存:609.65ms(我在這臺開發機器上使用基于文件的緩存,所以當我說“使用空緩存”時,我只是指rm -r cache在瀏覽器中加載 URL 之前。)因此,升級后 SQL 和緩存時間稍微加快了一些,但 CPU 時間增加了一倍。當我在調試工具欄中打開“時間”面板時,我看到增加的“時間屬性”是“請求”。同樣的事情發生在每個頁面上(包括只是由 生成的 HTML 的頁面TemplateView,所以它們沒有做任何棘手的事情),但只有當它第一次從空緩存加載時才會發生。在第一次響應之后,所有頁面都恢復到與 Python 2 環境中大致相同的響應時間。所以這與初始請求有關。我不確定在哪里可以嘗試找出 Django 僅在第一個請求時在做什么。任何指針?或者有什么明顯的東西可以讓我在從 Python 2.7 到 3.7 的跳躍中變慢?
查看完整描述

1 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

我終于能夠將這個問題追溯到 Django 調試工具欄本身,它在我的 Python 3 升級期間從 1.11 升級到 2.0。具體來說,工具欄的 SQL 面板導致速度變慢。如果緩存對象不存在,我有一個上下文處理器執行查詢。查詢本身很快,但由于某種原因,Django Debug Toolbar 2.0 為其生成堆棧跟蹤非常慢。我還沒有弄清楚 1.11 和 2.0 之間發生了什么變化導致了這種可怕的性能損失,但現在我知道問題出在哪里,我可以解決它。



查看完整回答
反對 回復 2022-06-02
  • 1 回答
  • 0 關注
  • 88 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號