python flask應用部署

来源:http://www.cnblogs.com/jcuan/archive/2016/11/17/6075333.html
-Advertisement-
Play Games

python flask+gunicorn+nginx部署應用 ...


失敗版本:flask+uwsgi

ini配置文件

[uwsgi]

callable = app      ;//程式內啟用的application變數名

home = /home/jcuan/code/python/project/venv    ;如果是venv環境下,一定要設置路徑

pythonpath = /home/jcuan/code/python/project/venv    ;可以設置pythonpath的路徑,flask命令行會自動設置一些路徑(比如我的自動設置了: /home/jcuan/code/python/project/venv),註意這個不會

socket = /tmp/uwsgi.sock    ; 啟動程式時所使用的地址和埠,可以採用埠或者unix socket

wsgi-file = /home/jcuan/code/python/project/venv/application/__init__.py      ;flask程式的啟動文件,這個文件里不需要有app.run(),有了反而會出錯

processes = 4     ;//處理器個數

threads = 2     ;//線程個數

不知道是有什麼特殊原因:1,callable不能在ini文件里配置,不管配置什麼都是預設的application;2,chmod-sock在ini里配置無效
運行

uwsgi --plugin python --ini  uwsig.ini --callable app --chmod-sock=666

nginx的文件配置大概如下(location是/,不會分別配置。。):

location / {
    include uwsgi_params;
    uwsgi_pass unix:/tmp/uwsgi.sock;
}

雖然可以運行,不過我在__init__.py裡面import的視圖函數統統沒有起作用,雖然綁定了,但是訪問對應的url是404,只有定義在__init__.py的視圖函數才起作用

成功版本flask+gunicorn

gunicorn.conf的基本配置,註意字元串都要用引號包含起來
註意這個地方也有坑,不要把sock文件放在/tmp目錄下,最好放/run等目錄下,因為伺服器的原因,/tmp目錄下文件可能只對特定的服務可見。

your system probably using namespaced temporary directories, which means every service can only see its own files in /tmp

workers = 3     #進程數
timeout = 30      #超時
bind = 'unix:/tmp/flask.socks'  #nginx監聽位置
backlog = 1000  #監聽隊列長度

然後又進入了一個坑,nginx那邊的超簡化版配置應該像這樣

server {
        listen 80;
        server_name 127.0.0.1;

        location / {
            include proxy_params;    #這裡邊設置了一些代理需要轉換的頭,比如得到真實ip, proxy_set_header X-Real-IP $remote_addr; 
            proxy_pass http://unix:/tmp/flask.sock;        #很奇葩,我一直寫的是unix:/tmp/flask.sock,然後一直都不對
        }
}

運行l類似下邊的命令就可以了gunicorn --config application/gunicorn.conf application:app。application:我的應用所在包的名字,app,flask啟動文件中Flask實例變數的名字


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • .NET Core 1.1 RTM 版2016/11/16 發佈。對應發佈 ASP.NET Core 1.1 、EF Core 1.1。 你可以通過Visual Studio 2015, Visual Studio 2017 RC, Visual Studio Code and Visual Stu ...
  • 一. Xcode 環境安裝 與 工程創建 1. 下載環境 相關資源下載 : -- IOS 相關資料下載頁面 : https://developer.apple.com/devcenter/ios/index.action ; -- Xcode 下載頁面 : https://developer.app ...
  • 1. echo和print的區別 echo沒有返回值,print有返回值1,執行失敗時返回false;echo輸出的速度比print快,因為沒有返回值;echo可以輸出一個或多個字元串,print只允許輸出一個字元串;print可以用於複雜的表達式,echo不行。 另問:echo是個函數嗎? ech ...
  • 在PHP面試中,經常碰到此題 :要求寫出5種以上的方法,獲取一個文件的擴展名,其實也是在考察面試者基礎知識的掌握程度,下麵整理了幾種常用的方法(下麵方法返回的都是不帶’.'的,如果要求帶 ‘.’的話 自己改一下): <?php $file = ‘siyuantlw/程式設計.php’; functi ...
  • 包裝類 基本類型 包裝類 + byte Byte + short Short + int Integer + long Long + char Character + float Float + double Double + boolean Boolean 基本類型轉為包裝類型: + 自動裝箱Au ...
  • byte tt=(byte)130 等於 -126 。 byte 占一個位元組,8bit 。第一位是符號位,0 表示正數,1 表示負數。因此byte 的取值範圍 [-128, 127] 。 130的二進位是00000000000000000000000010000010,截取成byte類型只保留後8位 ...
  • Django開髮網站需要遵循Django的一套開發流程。本節通過建立一個消息錄入頁面演示Django的開發流程及相關技術。 ...
  • 1 問題描述 利用Java EE相關技術實現一個簡單的Web聊天室系統,具體要求如下。 (1)編寫一個登錄頁面,登錄信息中有用戶名和密碼,分別用兩個按鈕來提交和重置登錄信息。 (2)編寫一個Servlet程式Main.java通過請求指派來處理用戶提交的登錄信息,如果用戶名為本小組成員的名字且密碼為 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...