阿吉的Sanic教程--21开发模式

版权声明:严禁转载,如需转载请联系作者 https://blog.csdn.net/weixin_40005874/article/details/86354766

21. 开发模式

(1)开发模式

Sanic的开发模式基于内置的websocket,通过创建sanic.Sanic的实例,我们可以传递以下参数进行配置:

选项 说明
host 服务主机地址(默认值127.0.0.1)
port 端口(默认值8000)
debug 是否打开调试模式(默认值:False)
ssl ssl上下文
sock 服务器允许接受的的地址
workers 用户异步的进行数量
loop 用于创建的循环事件
protocol 协议,为asynico.protocol的子类
access_log 是否开启日志处理功能

(2)运行数量控制

默认情况下Sanic使用主进行监听CPU的数量,如果想要提高执行效率只需要在app.run()中指定worker的参数即可,具体如下所示:

app.run(host='0.0.0.0', port=1337, workers=4)

Sanic将会自动调整进行的执行,建议根据电脑的核数调整workers的数量,最好是让二者相等。

(3)通过命令行运行

Sanic为开发者提供了命令行的启动方式例如:

python -m sanic server.app --host=0.0.0.0 --port=1337 --workers=4

(4)通过Gunicorn运行

Gunicorn是wsgi的在linux上的服务,

unicorn myapp:app --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker

(5)禁用调试模式的日志功能

一般为了提高性能要禁用一些功能,如调试,登录日志。

app.run(host='0.0.0.0', port=1337, workers=4, debug=False, access_log=False)

使用Gunicorn启动:

env SANIC_ACCESS_LOG="False" gunicorn myapp:app --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker --log-level warning

或者直接关闭日志功能:

app.config.ACCESS_LOG = False

(6)异步模式

开发者可能使用很多应用,要注意loop的使用。这个方法不支持很多进程,运城app没有足够的优势。下面给出一个完成的示例:

server = app.create_server(host="0.0.0.0", port=8000)
loop = asyncio.get_event_loop()
task = asyncio.ensure_future(server)
loop.run_forever()

猜你喜欢

转载自blog.csdn.net/weixin_40005874/article/details/86354766