在 python 在框架世界中,fastapi 这是一个新事物,也是一个建筑 api 最好的选择。同样,对于想在生产环境中免费快速测试应用程序的开发人员,render 这是个不错的选择。
在这篇文章中,我们将介绍如何 fastapi 将应用程序部署到渲染中。首先,让我们讨论为什么开发人员经常选择 fastapi 和 render。
为什么选择 fastapi?fastapi 主要用于构建高性能微框架 api(线索在名称中)。因此,和 django 和 flask 与旧的、知名的框架相比,fastapi 它有很多优点。
fastapi 第一个也是最明显的优点是它在构建过程中考虑了可扩展性和性能。
例如,fastapi 基于异步 asgi 而不是服务器 django 旧版本和其他框架使用的旧版本 wsgi。 asgi 服务器可以同时(并发)处理多个请求。这通常被视为需要处理高水平用户流量的应用程序的更好选择。
立即学习“Python免费学习笔记(深入);
fastapi 它还允许开发人员在定义异步函数时更容易地编写异步代码 async 关键字就够了。
但fastapi闪亮的“新鲜感”也是它的主要缺点。因为 fastapi 于 2018 与更成熟的框架相比,年才推出,fastapi 社区要小得多,学习资源(如编码教程)也要少得多。当你选择下一个项目时 fastapi 请记住这一点。
为什么要渲染?对于想在生产环境中免费快速测试其应用程序的开发人员来说,render 这是个不错的选择。
使用 render,您甚至可以访问免费套餐,而无需输入信用卡的详细信息。因此,与其他云服务不同,没有办法错误地收费。
正如我们将在下面的部分看到的,render 它还为整体开发人员提供了优秀的体验,干净易用 ui 以及与 git 和 github 平滑集成。额外的好处是,你在这里 render 上托管的任何应用程序都将立即免费获得 tls 证书。
render 免费套餐的缺点是部署可能需要很长时间。一旦这开始成为一个问题,你可能需要考虑升级到付费计划之一。
创建 fastapi 演示应用程序您可以查看、下载或克隆本文中使用的完整代码。
我们需要做的第一件事就是创建一个空目录来存储我们的项目。我们称之为 fastapi-render-appsignal。
以下命令在终端中运行:
mkdir fastapi-render-appsignal cd flask-heroku-appsignal touch main.py
项目入口点将是 main.py.
接下来,我们需要在根目录中运行 git initialize 命令使我们的项目成为 git 存储库:
git init
此外,在项目根目录下创建requirements.txt 将这两行添加到文件中:
fastapi uvicorn[standard]
然后运行:
pip install -r requirements.txt
若安装顺利,您应在终端中看到以下输出:
installing collected packages: websockets, uvloop, typing-extensions, sniffio, pyyaml, python-dotenv, idna, httptools, h11, exceptiongroup, click, annotated-types, uvicorn, pydantic-core, anyio, watchfiles, starlette, pydantic, fastapi successfully installed annotated-types-0.6.0 anyio-4.2.0 click-8.1.7 exceptiongroup-1.2.0 fastapi-0.109.0 h11-0.14.0 httptools-0.6.1 idna-3.6 pydantic-2.5.3 pydantic-core-2.14.6 python-dotenv-1.0.1 pyyaml-6.0.1 sniffio-1.3.0 starlette-0.35.1 typing-extensions-4.9.0 uvicorn-0.27.0 uvloop-0.19.0 watchfiles-0.21.0 websockets-12.0
现在,在 main.py 复制并粘贴以下准系统样板代码:
from fastapi import fastapi app = fastapi() @app.get("/") async def root(): return {"message": "hello world"}
让我们逐行解释这个简短的代码片段所做的事情。
我们现在可以使用服务器包 uvicorn(我们之前安装的)通过以下命令运行我们的项目:
uvicorn main:app --reload
假如我们打开浏览器 http://127.0.0.1:8000,我们只能看到以下纯度 json 响应:
{ "message": "hello world" }
但如果我们在那里 url 末尾添加 /docs,我们可以用它 fastapi 内置交互式 api 文档功能。
下面截图中的文档ui是swager ui提供:
你也可以试试 fastapi 另一种自动包含的文档 ui 样式。
在浏览器中输入网站http://127.0.0.1:8000/redoc。
这是redoc提供的:
部署渲染假设你已经在这部分了 github 为这个项目创建了一个存储库。如果您需要关于如何执行此操作的说明,请查看 github 官方文档。
render 其优点之一是它提供了一种简单直观的连接方式 github 存储库。
首先,转到 render.com 并使用 render 创建一个新帐户(你可以使用它) github 加快速度的证据)。
然后单击新建 按钮并选择创建新网络服务的选项。
链接您的 github 账户结束后,您应该看到下面的屏幕,它提供连接到 render 的 github 存储列表。让我们选择我们的 fastapi-render-appsignal 示例项目。
这将带我们进入主配置屏幕。在该地区,我只需要选择最接近你的位置(因为我在英国,所以我会选择法兰克福):
我们在屏幕底部有一些更重要的选择。
build 命令 将使用我们之前在项目中创建的requirements.txt 将项目中的所有包装安装在render中 远程服务器。
在在start命令下,我们将在生产环境中再次使用uvicorn,并告诉render使用项目根目录中的main.py启动应用程序。
注意: 你必须清楚地告诉你 render 使用哪个主机和端口(不同于使用其他服务器(如gunicorn)。不幸的是,任何官方渲染文档都没有提到这一点,但我将渲染社区论坛和“ fastapi 在“渲染”帖子中找到了应用程序部署的解决方案。
接下来,在实例类型列表下选择免费选项:最后,在环境变量下,指定python版本为3.10.7。确保这与您在本地项目中使用的版本相同。
完成 web 服务配置后,现在我们只需单击
创建 web 服务 按钮观看项目部署:
请记住,这将需要一些时间,因为我们使用免费计划。假如在部署过程结束时一切顺利,我们应该 render 在日志中看到一条最终消息:
“您的服务已上线”.
现在我们可以点击了 render 查看我们为我们生成的公共链接hello world fastapi 示例,包括 /docs 和 /redoc 自动文档链接:
安装用于 fastapi 的 appsignal 并监控仪表板的部署 我们现在很高兴有一个基本的 fastapi 应用程序正在运行和部署 render,但如果出现问题怎么办?即使有最好的手动和自动测试,软件开发也会出现错误和错误。关键是一旦出现错误,就可以收到报警,并迅速找出代码中的问题。在本教程的这一部分,我们将专门研究如何启用它。 appsignal 监控您的部署。这部分设置对于您检查哪些错误与具体部署有关非常重要。这将使您能够快速有效地诊断和修复应用程序中的问题。
首先,注册一个 appsignal 帐户(您可以免费试用 30 天,没有信用卡的详细信息)。
接下来,将 appsignal 和 opentelemetry-instrumentation-fastapi 添加到您的 requests.txt 文件中:
# requirements.txt appsignal opentelemetry-instrumentation-fastapi
pip install -r requirements.txt
import os import subprocess from appsignal import appsignal from dotenv import load_dotenv load_dotenv() revision = none try: revision = subprocess.check_output( "git log --pretty=format:'%h' -n 1", shell=true ).strip() except subprocess.calledprocesserror: pass appsignal = appsignal( active=true, name="fastapi-render-appsignal", push_api_key=os.getenv("appsignal_api_key"), revision=revision, )
最后,我们需要更新 main.py 以完成 fastapi 应用中 appsignal 的设置:
# main.py from fastapi import fastapi from opentelemetry.instrumentation.fastapi import fastapiinstrumentor #new import appsignal #new appsignal.start() #new app = fastapi() @app.get("/") async def root(): return {"message": "hello world"} @app.get("/items/{item_id}") async def get_item(item_id: int): return {"item_id": item_id} fastapiinstrumentor().instrument_app(app) #new
入门 对于需要完成的其它配置步骤,屏幕将提供一些建议:
但在这里,我们只注意确保 appsignal 跟踪我们的部署。转到 appsignal 仪表板中的
组织页面,然后单击组织设置以激活 appsignal 与 github 集成。查看 appsignal 将您的存储库的官方文件链接起来,以获得分步说明。
设置 github 集成并链接您的存储库后,您现在需要做的是 render for appsignal 中触发部署开始监控您的部署。在我们的例子中,我们只需要把它推到我们的主要分支:
git push origin main
deploys部分中看到 appsignal 跟踪我们的部署,以及任何与每个部署提交哈希有关的错误:
就是这样!包起来 在这个指南中,我们涵盖了很多内容!首先简单介绍一下选择fastapi和render的一些优缺点。
然后,我们创造了一个简单的 fastapi 将应用程序部署到 render,最后通过使用 appsignal 结束监控这些部署。
快乐编码!
p.s.如果您想在 python 文章发表后立即阅读,请订阅我们的文章 python wizardry 时事通讯,不要错过任何一篇文章!
以上是部署 Python FastAPI 更多关于渲染应用程序的详细信息,请关注其他相关文章!
电脑无法复制粘贴?快速修复指南!
部署 Python FastAPI 渲染应用程序-python教程
飞书文档受限:管理员亦无法复制粘贴,权限严格把控!
WPS菜单栏恢复:解决灰色无法点击的困扰!
建立 ORM Python教程研讨会
高效办公秘诀:办公软件快捷键全集!
国产服务器厂商排名:领军者实力尽显(注意:此标题符合20字以内的要求,并且没有使用双引号)
建立 ORM Python教程研讨会
IDC:华为擎云商用平板出货量获得中国市场第一-IT行业
q币可以充电话费-常见问题?
荣耀折叠机转轴新专利公布,解决阻尼不稳定、开合感差的问题——IT行业
宝马在7月份实施了降量保价策略,以应对价格战造成的严重损失——IT行业
世界上第一个,中国将主持铁路自动驾驶国际标准-IT行业的编制
第一个基于Mamba的MLLM来了!模型权重、培训代码等都已开源-人工智能
探索极限竞争性能,黑鲨外设新产品准备出发!-IT行业
夏普正在开发锌空气储能电池 2025 年启动验证试验-IT行业-IT行业
503代码错误-常见问题是什么?
错误代码10011是什么意思?常见问题
错误代码10018是什么意思?常见问题