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 的异步工作模式,如 gevent、eventlet 或 asyncio。这些工作模式允许 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:app | main是main.py的main,app是实例名,就是程序中的app = Flask( _name _) |
tip:如果-D这个命令运行后不能跳转到下一条命令输入,那就直接关闭窗口,哪里都不要点击。