gunicorn启动python服务

1,119 阅读3分钟

1.为什么用gunicorn启动

python main.py

这是直接通过命令行运行 main.py 脚本的方式。这通常用于开发和调试阶段,以便快速测试和验证你的代码。这种方式不适用于生产环境,因为它通常只能处理一个请求,不够高效。

Gunicorn 是一个用于部署 Python web 应用程序的服务器。

区别和优劣:

  • 并发处理能力:使用 python main.py 启动的方式通常只能处理一个请求,对于并发请求的处理能力较弱。而使用 Gunicorn 启动的方式可以配置多个 worker 进程,从而可以并发处理多个请求,提高了并发处理能力。
  • 性能:Gunicorn 是一个被广泛用于生产环境的 WSGI 服务器,专注于高性能。它采用多进程模型,可以更好地利用多核 CPU 资源,处理大量的并发请求,从而提供更好的性能和响应速度。
  • 健壮性:Gunicorn 提供了许多与生产环境部署相关的功能,如进程管理、日志记录、平滑重启等,这些功能有助于保持应用程序的稳定性和可靠性。
  • 部署和管理:使用 Gunicorn 可以更方便地进行应用程序的部署和管理,例如使用进程守护工具(如 systemd、Supervisor)来管理 Gunicorn 进程。

综上所述,如果是在生产环境中部署应用程序,推荐使用 Gunicorn 或其他类似的服务器来启动应用,以获得更好的性能和可维护性。在开发和调试阶段,使用 python main.py 可以更方便地进行快速测试和调试。

2.如何使用

首先需要安装gunicorn

pip install gunicorn -i https://pypi.tuna.tsinghua.edu.cn/simple

然后,切换到你放main.py的那一层目录,这个很重要

切换到之后, 使用下面这个命令启动

gunicorn -w 3 -b 0.0.0.0:6000 -D main:app

这样的话可以启动,但是他的工作方式是sync(using worker :sync),所以,他的性能并不是很好,因而我们可以根据实际需求更换他的工作方式,比如考虑使用 Gunicorn 的异步工作模式,如 geventeventletasyncio。这些工作模式允许 worker 进程同时处理多个请求,从而提高并发处理能力。


我使用的是gevent

1.安装gevent

pip install gevent -i https://pypi.tuna.tsinghua.edu.cn/simple

2.使用以下命令开启服务

gunicorn -w 1 -k gevent -b 0.0.0.0:6001 -D main:app

3.使用以下命令查看gunicorn的进程

ps -ef | grep gunicorn

4.如果想停止某个服务,可以使用下面这条命令

kill -9 进程号

可以根据需求调整参数

附参数的解释:

参数含义
-w 1通过调整 -w 参数来增加或减少 worker 的数量。更多的 worker 通常可以提高并发能力,但会占用更多的系统资源。
-k gevent一种异步的工作模式,允许 worker 进程同时处理多个请求,从而提高并发处理能力。
-b 0.0.0.0:6001这个是运行地址,一般main.py中写127.0.0.1:6001,然后在服务器中启动的时候,用0.0.0.0:6001就可以
-D这个是后台运行的意思。
main:appmain是main.py的main,app是实例名,就是程序中的app = Flask( _name _)

tip:如果-D这个命令运行后不能跳转到下一条命令输入,那就直接关闭窗口,哪里都不要点击。