首页 > 其他分享 >pyinstaller package fastapi application with Gunicorn

pyinstaller package fastapi application with Gunicorn

时间:2025-01-23 16:53:55浏览次数:1  
标签:__ pyinstaller gunicorn fastapi app application import self Gunicorn

使用 Gunicorn 部署 FastAPI 应用程序:快速而强大的组合

https://juejin.cn/post/7348003004123463717

本地部署

本地开发调试过程中,我通常是这样启动Fastapi服务的

在终端中运行:

 
uvicorn main:app --host 0.0.0.0 --port 80

当然,也可以python脚本启动:

 
import uvicorn
​
uvicorn.run(
    app="main:app",
    host="0.0.0.0",
    port=8088,
    reload=True
)

这样就好启动一个服务,reload=True支持热重载,方便调试。

应该是比较简单的,那到正式环境,为啥不使用uvicorn直接启动呢?是有更好的方式吗?

正式环境部署

在正式生产环境中,通常不直接使用 Uvicorn 来启动 FastAPI 应用,而是借助 Gunicorn 或者其他类似的 WSGI 服务器来处理请求。这是因为:

  • 性能和稳定性: Gunicorn 是一个专门用于生产环境部署的 WSGI 服务器,具有更好的性能和稳定性,能够处理大量并发请求并自动进行负载均衡。
  • 多进程支持: Gunicorn 支持多进程方式处理请求,通过调整 Worker 数量可以更好地利用多核 CPU 资源,提高并发处理能力。
  • 日志和监控: Gunicorn 提供了更丰富的日志记录功能,便于监控应用程序的运行情况,并支持与其他日志系统集成,有利于故障排查和性能优化。
  • 灵活性和扩展性: 使用 Gunicorn 可以方便地配置各种参数,调整工作模式、Worker 数量等,以适应不同规模和需求的应用程序。

终于引出了本文的主题,Gunicorn

Gunicorn

Gunicorn 是一个 Python WSGI HTTP 服务器,它允许运行Python的web应用程序。WSGI 是 Web Server Gateway Interface 的缩写,是 Python 应用程序与 Web 服务器之间的标准接口。

Gunicorn 的特点包括:

  • 易用性:只需一个简单的命令即可启动服务。
  • 兼容性:遵循 WSGI 标准,可以与大多数的Python web 框架协同工作。
  • 性能优化:使用预分叉模型来减少工作负载,并提高性能。
  • 并发处理:支持 gevent 和 asyncio 等异步工作模式,有效处理并发请求。

 

 

utils系列:pyinstaller 打包 以gunicorn启动的Flask

https://blog.csdn.net/qq_38284951/article/details/118249034

 

gunicorn with compiled python source

https://stackoverflow.com/questions/63242040/gunicorn-with-compiled-python-source

 

serving a gunicorn app with PyInstaller

https://github.com/benoitc/gunicorn/issues/669

from gunicorn.app.base import Application, Config
import gunicorn
from gunicorn import glogging
from gunicorn.workers import sync

class GUnicornFlaskApplication(Application):
    def __init__(self, app):
        self.usage, self.callable, self.prog, self.app = None, None, None, app

    def run(self, **options):
        self.cfg = Config()
        [self.cfg.set(key, value) for key, value in options.items()]
        return Application.run(self)

    load = lambda self:self.app


def app(environ, start_response):
    data = "Hello, World!\n"
    start_response("200 OK", [
        ("Content-Type", "text/plain"),
        ("Content-Length", str(len(data)))
    ])

    return iter(data)

if __name__ == "__main__":
    gunicorn_app = GUnicornFlaskApplication(app)
    gunicorn_app.run(
        worker_class="gunicorn.workers.sync.SyncWorker",
    )

 

标签:__,pyinstaller,gunicorn,fastapi,app,application,import,self,Gunicorn
From: https://www.cnblogs.com/lightsong/p/18688151

相关文章

  • 使用 PyInstaller 打包 Python 应用并解决依赖问题
    使用PyInstaller打包Python应用并解决依赖问题在Python开发中,有时需要将程序打包成独立的可执行文件,以便分发和部署。PyInstaller是一个广泛使用的工具,可以将Python程序及其依赖打包成可执行文件。然而,在打包过程中,我们经常会遇到一些问题,尤其是在处理复杂依赖或特定环......
  • pyinstaller package fastapi application
    pyinstallerhttps://pyinstaller.org/en/stable/installation.htmlPyInstallerbundlesaPythonapplicationandallitsdependenciesintoasinglepackage.TheusercanrunthepackagedappwithoutinstallingaPythoninterpreteroranymodules.PyInstaller......
  • 深度学习目标检测框架训练使用YOLOv8训练钓鱼检测数据集 使用Flask或FastAPI等框架创
    深度学习目标检测框架训练使用YOLOv8训练钓鱼检测数据集并构建一个基于YOLOv8的钓鱼检测系统使用YOLOv8训练钓鱼检测数据集,如何针对钓鱼检测进行调整和实现的详细步骤。1.安装依赖确保安装了必要的库。对于钓鱼检测,所需的库应该与之前提供的相同,但请根据实际情况检查是......
  • [超表面论文快讯-34] Light: Science & Applications-电磁超材料强化学习智能体-北京
    栏目介绍:“论文快讯”栏目旨在精简地分享一周内发表在高水平期刊上的Metasurface领域研究成果,帮助读者及时了解领域前沿动态,如果对专栏的写法或内容有什么建议欢迎留言,后续会陆续开启其他专栏,敬请期待。论文基本信息标题:Electromagneticmetamaterialagent作者:......
  • Django和FastAPI的比较
    在Python的Web开发领域,Django和FastAPI是两款备受瞩目的框架。通过对二者的实践与比较,本文总结了它们的特点与适用场景,希望能给开发者在选择时提供参考。1.设计理念的比较从框架的特性来看,Django以全栈式框架著称,内置诸多工具,涵盖ORM、数据验证、认证、会话管理、缓......
  • FastAPI 依赖注入之类依赖:使用类声明依赖项并简化查询参数
    FastAPI依赖注入之类依赖:使用类声明依赖项并简化查询参数在FastAPI中,依赖注入(DI)不仅支持函数,还支持类作为依赖项,这使得代码更加模块化与易于维护。通过类依赖,开发者能够封装复杂的业务逻辑与参数验证,提高代码的可复用性与可读性。本文介绍了如何使用类来声明依赖项并应......
  • SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路
    随着公司业务的增加,公司需要一个java+python人工智能相互配合架构,正常网站业务用java来做,而ai,例如电价预测等回归任务,以及大模型预测全网负荷,新能源出力等任务,使用python通过fastapi暴露接口来做,那么就需要springcloud架构注册发现。前端统一使用Vue进行效果的展示因此本......
  • iOS 逆向学习 - iOS Application Structure:iOS 应用程序结构
    iOS逆向学习-iOSApplicationStructure:iOS应用程序结构1.什么是IPA文件?IPA的核心组成2.目录详细解析(1)App图标-`AppIcon60x60@2x.png`(2)资源文件-`Assets.car`(3)本地化资源-`Base.lproj`(4)核心文件-`GothamTimes`(可执行文件)(5)配置文件-`Info.plist`(6)签......
  • FastApi框架异步调用同步问题
    Fastapi项目,在接口中调用同步方法,如果该同步方法,耗时较长(比如连接redis超时),会造成整个项目接口的阻塞,这是任何接口的访问都会被阻塞超时一、为什么会阻塞FastAPI是基于异步框架(如asyncio或anyio)构建的,它的核心是一个事件循环(EventLoop)。事件循环负责调度和执行所有的异步......
  • Spring Cloud - bootstrap.yml vs application.yml
    WhenusingSpringCloud,the'real'configurationdataisusuallyloadedfromaserver.InordertogettheURL(andotherconnectionconfiguration,suchaspasswords,etc.),youneedanearlieror"bootstrap"configuration.Thus,you......