开发的最後一哩路部署应用
。部署 API 必须在一个稳定的服务器上运行,大多数企业可能会租用云端的虚拟服务器。常见的云端平台三巨头有 Google Cloud Platform (GCP)、Amazon Web Service (AWS) 以及 Microsoft Azure。以上三家供应商都有提供免费的试用额度以及部署的教学,另外云端服务器计费的方式是采用多少付多少的概念收费。若有 GCP 使用需求可以参考我过去所录制的系列教学影片 GCP教学-Python。假设你只有自用需求,或是正在寻找免费的云端服务器,这一篇文章可以帮助到你。
Heroku 是一个支援多种程序语言的云平台即服务。并且提供一个免费的云端服务,这个云端平台一个帐号可以免费建立五个专案,虽然是免费当然也有使用上的限制。例如:(1) 超过30分钟
闲置将会进入睡眠状态,之後重新启动 API 时会需要等待一些时间才有回应。(2) 500MB
的储存空间限制。当然 Heroku 也提供多种语言的部署环境像是 Ruby、Node.js、PHP、Go、Python ...等。本篇文章会教你如何部署 Python 的 Flask API。
这一篇文章将以花朵分类 API 为例,拿一个先已经训练好的模型进行 Python Flask API 的开发与部署。至於模型的训练和 Flask API 的详细内容这边就不细提,若各位想了解的可以参考昨天的内容 [Day 29] 使用 Python Flask 架设 API 吧!。另外建议大家可以参考下面这份程序码进行今天的内容实作,使用 GitHub 并将程序 fork 到自己的帐号中。
以下简单说明专案内部署 Heroku 的重要档案。
Procfile 这个档案是要告诉 Heroku 要如何启动这个 web app,在 Heroku 里,执行 Python 要使用 Gunicorn 来启动 web server。所以在 requirements.txt 里,请记得要输入 gunicorn。Procfile 档案,的内容如下:
web gunicorn run:app
建立帐号後右上角「 New 」中的「 Create new app 」建立第一个应用程序:
这一步骤是将 GitHub 上的专案直接与 Heroku 做连动,你也可以直接 Fork 这个专案直接实作。或是你也可以透过 Heroku CLI 直接将本机的程序码部署到 Heroku 主机中。部署阶段蛮吃大家 Git 版控的能力,基本的教学这里就不赘述,想了解更多 Git 技巧可以参考。
点选 Enable Automatic Deploys 连动後可以选择自动部署。当你 GitHub 专案的程序码有更新时他会自动帮你把更新的程序部署到 Heroku 中。
由於自动更新与部署会有上限次数,当你的专案在 GitHub 更新次数太频繁。Heroku 就会停止自动发布,这时候你也可以试试手动部署。
确认以下事情都完成後就可以部署程序罗!记得我们有跟 GitHub 连动,当你的专案 git push
後 Heroku 就会帮你自动部署了。你可以从 Activity 内看到部署状态,也能从右上角 More -> View logs 观看後台 Log 讯息。或者你也可以从 Deploy 内手动部署也行。
部署完成後你可以在 Settings 内的 Domains 看到你的云端连结,这个连结点下去就能看到我们的API罗!
昨天已经跟大家介绍 Postman 的使用方式。今天我们就来试试部署在云端服务器的结果,基本上测试的方式跟昨天在本机测试的方法一模一样。打开 Postman 点选 POST 并贴上 API 网址 https://专案名称.herokuapp.com/predict
。并模拟前端使用者发送数值 Body -> raw -> JSON 将花朵的四个参数以 JSON 格式传给後端 API。
今天!终於完成了2021年的iT邦铁人赛~ 希望这系列内容能帮助到各位
本系列教学内容及范例程序都可以从我的 GitHub 取得!
<<: 图的最短路径 - 佛洛伊德演算法 - 表格算法 - DAY 28
>>: [Lesson27] Kotlin - Interface
运算子 程序的世界中,变数是无时无刻一直在变化的, 变数的变化也成为程序的精随所在, 但为甚麽变数会...
K8s - Kubernetes 指令参考笔记 参考资料 参考资料1:Day 11 Kubernet...
简单架设 x 不失质感 目录 源起 : 开发者网站 开发工具 : Adobe Brackets 基础...
教材网址 https://coding104.blogspot.com/2021/06/java-5...
this 是 JavaScript 的关键字 this 是 function 执行时,自动生成的内...