標籤

Flask

處理 Python 中的 ImportError: cannot import name 'url_quote' from 'werkzeug.urls

前言

近期總算有空寫一些 side project,當然同時也會來 maintain 有在使用的專案,但因為過去都使用 Flask(近期都 FastAPI),有些Code年久失修,或是有升級版本,都會造成 Cloud Run 上的佈署失敗,以下就提供解法給大家。

繼續閱讀

初見 FastAPI (From Flask to FastAPI)

前言

雖然現在網路越來越快,每個同步(Synchronize)的 request 處理速度都很快,但用非同步(Asynchronous)不僅可以同時處理較多 request,也不會被前面那個 request 拖時間導致後面排隊的 request 不用做事,各走各的路,出事自己負責(咦?),雖然非同步有其他也要探討的問題,但這裡就先不討論這個~

FastAPI 使用起來有什麼感覺呢?

  • 適用於 Python 3.6 (含)以上的版本
    • 3.6 為目前 line-bot-sdk-python 最多人使用的版本
  • 支援非同步,藉由 Asyncio
  • Pydantic 做型別檢查 (超讚)
  • 寫起來跟 Flask 很像,無痛上手
  • Production Ready,這很重要,若文件上沒這個使用要多注意,隨時可能會翻船?
  • 寫一個 API 自動建一個 Swagger 文件,API 文件一起達成!
    • 可以使用 OpenAPI generator 來產生套件給其他語言使用者介接
繼續閱讀

使用 Serverless/Flask/Swagger 在 AWS 上搭建打造 Open API

前言

約在一年前,當時公司的同事帶我玩過 Swagger,只是當時的我寫得不太習慣,直到寫這篇之前都還只是寫 markdown 來做 API 文件 😓,不過寫 API 到最後總是要開放給其他人需要測試以及用文件來描述功能,但只是寫 Readme.md 給其他人看感覺有點不負責任 (?),所以這個時候 Swagger 就發揮它的作用啦~

但是看著下面這張圖… 左邊那是怎樣!怎麼設定了一大堆右邊才出現一點點東西,估且不論還要設定 Model、Payload 什麼的,我想光寫左邊這份文件加測試的時間我都可以寫一份 Markdown 給其他同仁用 Postman 測試了…🤣🤣🤣 這時候套件就出動啦,這次要介紹的是 flask-restful-swagger-2.0,他是延續原版套件並加以更新的,不得不說再搭更新完後整體寫起來人性多了,像是文先寫法用 decorator 的寫法在路由之前、宣告 Schema 時只要用類別包起來之類的,讓寫文件可以用 python 的寫法去寫,除了特殊的設定需要比對 Swagger 官方文件外,在建一個 Swagger 格式的文件這樣已經超快了 💪 既然如此那就介紹一下他的相關設定並把它記錄下來吧!

繼續閱讀