關於Django項目集成Xadmin後,出現服務異常解決方案

Django項目集成Xadmin後,偶爾出現頁面不能訪問,重啓服務也不行,如果是Nginx部署直接報504等錯誤。

解決方案:

在項目中的靜態文件中找到:bootstrap-clockpicker.js,具體路徑

static/xadmin/vendor/bootstrap-clockpicker/bootstrap-clockpicker.js

找到 var svgNS = 'http://www.w3.org/2000/svg',將http改爲https或者將此url用空字符代替,方可解決。

原因是xadmin加載靜態文件時候會請求這個路徑,現在這個連接使用https協議,而xadmin訪問http,http跳轉https時發生網絡阻塞,所以導致我們的頁面加載很慢,或者加載不出來的情況。

補充:

經過上面的修改後,結果發現問題仍然存在,由於項目是用uwsgi啓動的,然後查看uwsgi日誌,結果發現下面的一段報錯信息。

HTTPSConnectionPool(host='bootswatch.com', port=443): Max retries exceeded with url: /api/3.json (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f7d0c153ef0>: Failed to establish a new connection: [Errno 101] Network is unreachable'))

原來xadmin啓動的時候,會去訪問bootswatch.com這個路徑,而且看端口是443,而且後面的url是/api/3.json,那麼我們可以大膽猜測完整路徑爲https://bootswatch.com/api/3.json,我們訪問,果然是一堆js字串。

我們可以將這堆字串複製,放在項目的靜態文件中,讓其調用的時候直接訪問我們的靜態文件。

最後一步也就是最關進一步了,就是替換路徑。

經過一番搜索,最終發現是這個文件調用了外鏈接口,extra_apps/xadmin/plugins/themes.py

編輯這個文件,在79行將需要外網訪問的url改成我們自己的。問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章