Flask  使用Gunicorn部署服务介绍

 更新时间:2021年11月26日 10:56:40   作者:tigeriaf  
这篇文章主要分享了 Flask  使用Gunicorn部署服务介绍,Flask 虽然自带 Web 服务器,但是该服务器性能较低,是单进程单线程模型,原本是供开发测试使用。所以我们在生产环境中需要使用 Gunicorn 这样高性能服务器部署Flask服务,想了解更多内容,请参考下面详细内容

前言:

在开发时,我们使用flask run命令启动开发服务器运行应用,该服务器是由 Werkzeug 提供的,但是该服务器性能比较低,只能供开发测试用来调试使用,生产环境不建议直接使用,需要一个高性能的服务器来部署 Flask 服务,Gunicorn 是推荐比较多的高性能服务器,接下来就具体介绍一下。

1、Gunicorn

Gunicorn,绿色独角兽(Green Unicorn),是一个 Python WSGI HTTP 服务器,只支持在 Unix/Linux 系统下运行,来源于Ruby Unicorn 项目。它采用 pre-forkworker 模型,在启动时,会在主进程中预先 fork 出指定数量的 worker 进程来处理请求,极大提升了服务器请求负载能力,又可以兼容于多种 Python Web 框架,实现简单,占用系统资源少,速度也相当快,因此受到广大 Python 开发者的喜爱。

gunicorn 的安装也非常简单,使用pip install gunicorn命令即可

2、Gunicorn 的使用

Gunicorn 可以使用命令来运行,命令格式如下:

gunicorn [OPTIONS] 模块名:应用实例名 

比如一个简单的 Flask 应用的 app.py 文件:

from flask import Flask

app = Flask(__name__)

@app.route("/")

def index():

    return "hello world"

if __name__ == '__main__':

    app.run()

可以使用以下命令启动应用:

gunicorn -w 4 -b 127.0.0.1:8888 app:app

  • -w:是开启的进程数量
  • -b:指定监听地址和端口
  • app:app:第一个 app Python 模块文件的名称,第二个指的是 Flask 应用实例的名称

上述命令代表的是使用 4个 worker 进程来运行 Flask 应用,绑定到 本地的 8888 端口。

gunicorn 其实还有非常多的配置项,可以通过gunicorn -h查看。

实际上,由于运行时需要指定的配置项很多,通过命令的方式运行Gunicorn就会非常麻烦,通常会把配置项写入 gunicorn.config.py 文件来进行指定。

如:

# 日志配置

loglevel = "debug"

accesslog = './log/access.log'

errorlog = './log/error.log'

workers = 4

# 设置工作模式为协程

worker_class = "gevent"

bind = "0.0.0.0:8080"

以上配置了日志、工作模式等配置项,把工作模式设置成了 gevent, 是基于Python 第三方库 gevent 的异步工作模式,除此之外,还有synceventlettornadogthread,默认是sync

配置完成后,使用gunicorn app:app -c ./gunicorn.config.py命令即可使用 gunicorn 运行 Flask 服务。

到此这篇关于 Flask  使用Gunicorn部署服务介绍的文章就介绍到这了,更多相关 Flask  使用Gunicorn部署服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

关于 gunicorn 更详细的使用方法,可以查看gunicorn 官方文档进一步了解。

相关文章

  • Python中字典列表中删除重复项

    Python中字典列表中删除重复项

    本文主要介绍了Python中字典列表中删除重复项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 一分钟带你掌握Python中pip的安装与使用方法

    一分钟带你掌握Python中pip的安装与使用方法

    pip是什么?它是Python包管理工具,这个工具提供了对Python 包的查找、下载、安装和卸载的功能,这篇文章主要介绍了pip的安装与使用方法
    2021-08-08
  • Python如何重新加载模块

    Python如何重新加载模块

    这篇文章主要介绍了Python如何重新加载模块,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Python入门教程(一)Python简单介绍

    Python入门教程(一)Python简单介绍

    这篇文章主要介绍了Python入门教程(一)Python简单介绍,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-04-04
  • Python模块_PyLibTiff读取tif文件的实例

    Python模块_PyLibTiff读取tif文件的实例

    今天小编就为大家分享一篇Python模块_PyLibTiff读取tif文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • PyQt5每天必学之像素图控件QPixmap

    PyQt5每天必学之像素图控件QPixmap

    这篇文章主要为大家详细介绍了PyQt5每天必学之像素图控件QPixmap,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Linux下升级安装python3.8并配置pip及yum的教程

    Linux下升级安装python3.8并配置pip及yum的教程

    这篇文章主要介绍了Linux下升级安装python3.8并配置pip及yum的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Python3 pickle对象串行化代码实例解析

    Python3 pickle对象串行化代码实例解析

    这篇文章主要介绍了Python3 pickle对象串行化代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 基于Python实现代码版彩票小游戏

    基于Python实现代码版彩票小游戏

    彩票是一个恒古不变的话题,现在的生活越来越好,大部分人开始关注福利彩票的事情,当然也有很多人都想中将是真的啦~哈哈哈,但是大家还是要适当哦!小编今天给大家做了一款简易的彩票小游戏,让我们看看谁能中一等奖吧?谁又是二等奖、三等奖呢
    2023-03-03
  • Opencv图像处理之详解掩膜mask

    Opencv图像处理之详解掩膜mask

    这篇文章主要介绍了Opencv图像处理之详解掩膜mask,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论