Serverless Web Function 實踐教程(二):基於 Web 函數部署您的 Flask 項目

Flask 是一個基於 Python 的輕量級 Web 框架,它基於一系列第三方依賴包實現業務邏輯,使得 Flask 使用更爲靈活,並可通過一系列擴展定製或擴展其能力,其中最主要的兩個核心模塊是 WSGI 工具集 Werkzeug 和渲染模板框架 Jinja。Flask 輕量、靈活的特點使得它廣受開發人員歡迎,用於快速實現一個網站或 Web 服務的搭建。

本篇教程將爲您指導,如何通過 SCF Web Function,快速部署您的 Flask 業務上雲。

01. 模板部署 - 無需改動業務代碼,一鍵部署

  1. 登錄 Serverless 控制檯,單擊左側導航欄的「函數服務」,在主界面上方選擇期望創建函數的地域,並單擊「新建」,進入函數創建流程。

  2. 選擇使用**「模版創建」來新建函數,在搜索框裏輸入 「WebFunc」,篩選所有 Web 函數模版,選擇「Flash 框架模版」**,點擊 「下一步」,如下圖所示:

  1. 在「配置」頁面,您可以查看模版項目的具體配置信息並進行修改;

  2. 單擊「完成」,即可創建函數。函數創建完成後,可在「函數管理」頁面,查看 Web 函數的基本信息,並通過 API 網關生成的訪問路徑 URL 進行訪問,查看您部署的 Flash 項目。

02. 自定義部署 - 3 步快速遷移本地項目上雲

1. 本地開發

  1. 首先,需要確認您本地的環境內已經安裝好 Flask
pip install Flask
  1. 本地創建 Hello World 示例項目,在項目目錄下,新建 app.py 項目,實現最簡單的 Hello World 應用,示例代碼如下:
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
   return 'Hello World'

if __name__ == '__main__':
   app.run()
  1. 本地運行 app.py 文件,在瀏覽器裏訪問 http://127.0.0.1:5000,即可在本地完成 Flash 示例項目的訪問:
$ python3 app.py

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [22/Jun/2021 09:41:04] "GET / HTTP/1.1" 200 -

2. 部署上雲

接下來,我們對本地已經創建完成的項目進行簡單修改,使其可以通過 Web Function 快速部署,對於 Flask,具體改造步驟如下:

1. 安裝依賴包

由於 SCF 雲上標準環境內沒有 Flask 依賴庫,此處您必須將依賴文件安裝完成後,與項目代碼一起打包上傳,首先新建requirements.txt文件:

#requirements.txt

Flask==1.0.2
werkzeug==0.16.0

接下來執行安裝:

pip install -r requirements.txt

2. 修改監聽地址與端口

在 Web 函數內,限制了監聽端口必須爲 9000,因此需要對監聽地址端口進行修改,改爲 0.0.0.0:9000

您也可以在 scf_bootstrap 中,通過環境變量配置監聽端口

3. 新增 scf_bootstrap 啓動文件

在項目根目錄下新建 scf_bootstrap 啓動文件,在裏面完成環境變量配置,指定服務啓動命令等自定義操作,確保您的服務可以通過該文件正常啓動

#!/bin/bash
/var/lang/python3/bin/python3 app.py

創建完成後,注意修改您的可執行文件權限,默認需要 777755 權限

chmod 777 scf_bootstrap

注意

  • 在 SCF 環境內,只有 /tmp 文件可讀寫,建議輸出文件時選擇 /tmp,其它目錄會由於缺少權限而寫入失敗
  • 如果想要在日誌中輸出環境變量,啓動命令前需要加 -u 參數,示例:python -u app.py

4. 本地配置完成後,執行啓動文件

確保您的服務可以本地正常啓動,接下來,登錄騰訊云云函數控制檯,新建 Web 函數以部署您的 Flash 項目。

3.開發管理

部署完成後,即可在 SCF 控制檯快速訪問並測試您的 Web 服務,並且體驗雲函數多項特色功能如層綁定、日誌管理等,享受 Serverless 架構帶來的低成本、彈性擴縮容等優勢。

Web Function 使用體驗

Web Function 當前已在「成都、北京、上海」地域發佈,其他地域將陸續開放,敬請期待!

One More Thing

立即體驗騰訊雲 Serverless Demo,領取 Serverless 新用戶禮包 👉 騰訊雲 Serverless 新手體驗

歡迎訪問:Serverless 中文網

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