03 Gunicorn 运行
基本用法
gunicorn [OPTIONS] [WSGI_APP]
这里的WSGI_APP一般格式是模块名称加上变量名称。在20.1.0这个版本后,这个地方变成了一个config文件。 举例来说:文件名为test.py
def app(environ, start_response):
"""Simplest possible application object"""
data = b'Hello, World!\n'
status = '200 OK'
response_headers = [
('Content-type', 'text/plain'),
('Content-Length', str(len(data)))
]
start_response(status, response_headers)
return iter([data])
这时候你要启动程序要用下面的命令:
gunicorn --workers=2 test:app
这里的变量名称也可以是一个函数调用,比如上面的的例子可以改成这样的:
def create_app():
app = FrameworkApp()
...
return app
这样调用也是一样的效果:
gunicorn --workers=2 'test:create_app()'
常用配置参数
- -c CONFIG, –config=CONFIG 定义配置文件的路径
- -b BIND, –bind=BIND 定义服务器通信地址和端口
- -w WORKERS, –workers=WORKERS 定义工作进程的数量,这个数量大概每个CPU配置2-4个
- -k WORKERCLASS –worker-class=WORKERCLASS 要运行哪种类型的工作进程。可以设置为(sync, eventlet, gevent, tornado, gthread. sync)中的一种。
- -n APP_NAME, –name=APP_NAME 如果开启了可以设置进程名。 其他参数请查阅官方文档吧。
集成
Django
如果没有定义的话,gunicorn 会自动去调用一个WSGI的应用程序,比如一个典型的Django程序,gunicorn的格式如下:
gunicorn myproject.wsgi
部署起来相当方便哦。 上面要注意的是,你的项目要在python PATH下,最简单的办法就是和Django目录下的manage.py放在同一个目录。
还有个配置,这个可以直接配置Django settings中的内容:
gunicorn --env DJANGO_SETTINGS_MODULE=myproject.settings myproject.wsgi
粘贴部署
gunicorn --paste development.ini -b :8080 --chdir /path/to/project
gunicorn --paste development.ini#admin -b :8080 --chdir /path/to/project