介绍
Heroku是一个云平台即服务(PaaS),支持Ruby on Rails,Java,Node.js,Scala,Clojure,Python,PHP和Go。Heroku的免费版本每月提供550–1000 dyno小时。如果没有人使用您的应用程序,则您的应用程序会在30分钟后进入休眠状态。如果您的每月动态小时数在限制范围内,则您的应用程序将始终免费。
Dynos是Heroku平台上的隔离虚拟Linux容器。
在本文中,您将了解设置和运行FastAPI项目并使其在Heroku上24/7处于活动状态是多么容易。
我立方米[R rently主办本FastAPI网站在Heroku的作为演示。
GIT
我使用Gitstart自动执行Git初始化。从您的终端运行git init
。添加.gitignore
和自述文件并提交一条消息。这会在Github中创建一个新的仓库,它将推送所有文件。
$ mkdir my_new_project
$ cd my_new_project
$ gitstart
设置您的Heroku帐户
个人帐户每月有550个免费动态小时基础。除了这些基本时间之外,使用信用卡验证的帐户[1]将获得每月免费dyno配额增加的450小时。[2]
您需要将SSH密钥添加到Heroku。[3]
安装Heroku CLI [4],
然后从您的终端登录到Heroku并创建一个Heroku应用程序:
$ heroku登录
$ heroku创建

您可以将自定义域添加到您的Heroku应用。[5]
如何在Heroku上为FastAPI创建require.txt
Heroku需要requirement.txt
安装Python软件包。pipreqs
[6]根据您项目中的导入生成它。
$ pip install pipreqs
$ cd my_new_project
$ pipreqs ./#
如果您已经具有
require.txt $ pipreqs --force ./
由于pipreqs
是基于生成的,因此import
您需要requirements.txt
手动添加以下内容。
uvicorn == 0.12.3
aiofiles == 0.6.0
python-multipart == 0.0.5
jinja2 == 2.11.2
您需要uvicorn
在Heroku上启动ASGI服务器。您需要aiofiles
静态文件。如果您的项目具有表单,请添加python-multipart
。如果您的项目使用模板引擎,请添加jinja2
。
runtime.txt
Heroku使用默认的Python版本。为了使用特定的Python版本,请在runtime.txt
您的Python版本中添加。例如:
python-3.8.6
程序文件
Heroku需要Procfile。
如果您在app目录中有main.py
,请添加以下内容:
网址:uvicorn app.main:app --host = 0.0.0.0 --port = $ {PORT:-5000}
如果main.py
在根目录中:
网址:uvicorn main:app --host = 0.0.0.0 --port = $ {PORT:-5000}
环境变量
Heroku不使用.env
文件。而是将.env
文件中的值添加到Config Vars。您可以在“设置”标签下找到它。

如何上传到Heroku
现在您可以将项目推送到Heroku了:
$ git push heroku main
$ heroku open
heroku open
命令在浏览器中打开您的项目。

如何添加子域
我正在使用Cloudflare,这是我必须要做的。
选择CNAME作为类型。添加您的子域名作为名称。为内容添加您的Heroku域。您的Heroku域名类似于serene-example-4269.herokuapp.com。
下图显示了如何添加toolbox.mywebsite.com
子域。

如何使您的应用保持活动状态24/7
闲置30分钟后,Heroku应用程序进入空闲状态。您可以使用找到您的应用程序流程heroic ps
。

您可以在最后一行找到“ idle”。
这是我的其他应用程序进程状态,显示为“启动”。

cron-job.org [8]和Kaffeine [9]提供免费服务。两者都按计划的时间访问您的URL。
cron-job.org
您可以通过添加URL和执行计划来创建cronjob。

对于您的cronjob,您需要选择每15分钟一次。如果您每30分钟设置一次,则可能会延迟5到15秒。

您可以轻松地编辑或删除cronjob。
如何修复失败的Cron作业
您的cron作业可能无法告诉“响应数据太大”或“输出太大”。

cron-job.org从您的URL /脚本接受最多4 kB的响应数据。要解决此问题,您可以创建一个返回JSON字符串而不是HTML页面的终结点。
咖啡因
Kaffeine每隔30分钟会ping您的Heroku应用程序一次,因此它永远不会进入睡眠状态。

如何从咖啡因中删除您的应用程序
网站中的链接无效,但是如果您单击下面的链接,该链接对我有用。
http://kaffeine.herokuapp.com/#decaf

如何重命名您的应用
$ heroku apps:重命名new_app_name
重命名应用程序时,请不要忘记更新您的cron作业。
如何SSH到Heroku
您可能要SSH到Heroku。heroku ps:exec
做到这一点。
$ heroku ps:exec
建立凭据...完成
在⬢demo-desuyo上连接到web.1 ...
〜$
结论
Heroku为您的项目提供最多1000个小时的免费托管,其使用的RAM不足512MB。您可以使用您的域名。如果您需要自定义域上的SSL,则需要升级到Hobby层。
cron-job.org和Kaffeine提供cronjob来访问您的URL以避免睡觉。
没有评论:
发表评论