二零二一年十一月七日
使用gunicorn服务进行项目部署
gunicorn.conf.py
# 导入获取cpu核数的包
import multiprocessing
# 导入获取本地计算机名称的包
import getpass
# 指定运行的worlers个数
workers = mutiprocessing.cpu_count * 2 + 1
# 获取本地的用户名(也就是本地电脑的名称)
local_host_name = getpass.getuser()4
绑定的端口号
bing = '0.0.0.0:1234'
# 是否是守护
daemon = False
# 如果是本地启动 而不是服务器启动就需要运用下面的端口
if local_host_name = "JW"
bing = "0.0.0.0:1111"
backlog = 2048
worker_connections = 1000
debug = False
pinfile = "./gunicorn.pid"
errorlog = './gunicorn.log'
threads = 2
启动命令
gunicorn -c guniconr.conf.py manage:app
# 一般来说 flask主要入口文件名称就是manage 如果是别的名称的话就需要改成对应的名称
而app则是flask实例化的对象
一般使用flask框架的时候有时候我们会用 flask的脚手架 下面这个包
from flask_script import Manage
# 但是gunicorn代理的确实flask本身实例化的app也就是你的实例化的对象 如果使用manage里面的flask启动方式就会报错
所以切记启动项目的时候需要使用flask本身的run方法去启动 要不然就会报错
# 还有第二个点! 有些人使用gunicorn的时候用 supervisord 去代理flask启动的项目 也就是检测
当然有些人还用的就是 celery 一起监控 如果异常退出 那么supercisord就会监控这些项目做出一些相应的处理
但我的项目跑在了docker上面 docker有自己的监控 和supercisord是一样的 有异常退出 那么自动重启
如果docket 部署的时候 daemon 必须关上 因为docker 里面必须有前台一直运行的程序 否则docker认为没有程序可运行