FLASK部署服務器,Ajax請求報錯500 解決思路

重點:500錯誤是服務器內部錯誤而返回的相應,一般來說能返回500,屬於服務端後臺應用錯誤,即flask應用錯誤

運行flask需要https server網關,之前已經說到python應用網關常規使用uwsgi,所以配置flask 項目的網關也是使用uwsgi


在服務器上,需要做以下幾步:

1、安裝uwsgi,pip install uwsgi安裝即可

2、安裝flask,本地開發的時候pycharm是安裝後才加載的flask,pycharm都提供好了,然而第一次部署到服務器上的時候,服務器是沒有flask的
所以服務器需要安裝flask,pip install flask即可,很多未知的請求500錯誤,這是排查的第一步

3、啓動flask應用方式:
    假定我的flask py文件叫app.py

    uwsgi --http :9090 --chdir=/data/uwsgi/  -w app:app             可以
    uwsgi --http :9090   -w app:app                                 可以
    uwsgi --socket :9090 -w app:app                                 可以
    uwsgi -s /tmp/uwsgi.sock -w app:app                             可以
    uwsgi --http :9090 --chdir=/data/uwsgi/  --wsgi-file app.py     錯誤
    uwsgi --socket :9090 --chdir=/data/uwsgi/  --wsgi-file app.py   錯誤


    以上多種啓動方式,能夠正常啓動的例如前四種,而後面兩張會在請求的時候報錯500,分析啓動因子:
    uwsgi + (啓動方式) + (端口)+|(工作目錄)...參數| + -w  +項目名(去除py後綴):app
    以上的啓動方式,括號裏面的都可以寫道配置文件中,最後直接指定配置文件啓動
    啓動方式(必須要):
        可以是http直接作爲web api請求,可以是socket作爲nginx後端api請求,可以是-s把請求類型定義爲根據系統socket走

    端口(必須要):
        用http方式,端口可以ip直接訪問,用socket方式,智能訪問nginx的端口,nginx會自動跳轉到uwsgi服務端口(前提是nginx配置好了)

    工作目錄/虛擬空間等等:
        可以配置可以不配置,大多數情況下不影響啓動,因爲我後期是用docker跑服務,也算是獨立隔離的,所以沒有配置這些

    項目名:
        比如我的是app.py文件,所以叫app,當你的文件時server.py時,項目名叫server,xxx.py時,項目名叫server,xxx

    最後的app:
        這個app代表的是py文件裏面的程序,名叫app,和if __name__ 那裏的app.run()的這個app是對應的,默認就是app,一般不需要改


注意:測試請求的時候返回500錯誤,基本上都是flask程序錯誤或者網關配置不對,和nginx沒有太多關係
     而程序錯誤排查順序是:

     1、uwsgi先打開前臺運行模式,觀察啓動日誌,確保不是uwsgi網關配置錯誤,如果uwsgi運行錯誤日誌會有輸出
     2、查看uswgi是否有錯誤日誌,如果有,看是否是uswgi錯誤導致未運行項目

     如果是項目錯誤:

     2、python版本是否一致
     3、程序依賴是否齊全,比如flask包
     4、程序邏輯是否正確
     5、最後找不到原因的時候,開啓debug和log輸出

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