1,Deploying(部署)

通过内置的websocket可以很简单的部署sanic项目,之后通过实例sanic.Sanic,我们可以运行run这个方法通过接下来的关键字参数

  • host (default "127.0.0.1"): Address to host the server on.

    • 默认的主机ip是127.0.0.1
  • port (default 8000): Port to host the server on.
    • 默认的端口是8000
  • debug (default False): Enables debug output (slows server).
    • 调试模式(默认是False)可以输出degug
  • ssl (default None)SSLContext for SSL encryption of worker(s).
    • 在ssl加密中(参数默认是空)
  • sock (default None): Socket for the server to accept connections from.
    • 接收连接数的socket是默认空
  • workers (default 1): Number of worker processes to spawn.
    • 运行程序的进程默认是1
  • loop (default None): An asyncio-compatible event loop. If none is specified, Sanic creates its own event loop.
    • 异步兼容的事件循环,如果没有,sanic将会创建自己的时间循环
  • protocol (default HttpProtocol): Subclass of asyncio.protocol.
    • 异步协议默认是HTTPProtocol协议

1.1workers

通过默认值,Sanic仅仅使用一核CPU来监听主程序的进程,为了压榨出果汁,恰好一定特殊数量的工人用run参数

app.run(host="127.0.0.1", port=8000, workers=4)

Sanic能够自动的多线程旋转上升,且在他们之间有路由指示,我们推荐尽可能多核的运行

1.2,运行via命令

如果你喜欢使用命令模式参数,你可以启动Sanic服务端执行模块,,如果你初始化一个Sanic为一个app对象在一个文件中,你可以运行这个服务文件执行以下代码:

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

通过这样的方式运行sanic,也不是引用app.run在Python中不是必须的,如果存在,确定要包起来,当解释器跳转执行的时候,它会被执行

if __name__ == '__main__':
app.run(host="0.0.0.0",port=1337, workers=4)

1.3,运行via Gunicorn

Gunicon'Green Unicorn' 是一个为UNIX服务的WSGI HTTP, 它是一个pre-fork 工作模块的端口,是从Ruby的Unicorn项目中来.

为了运行sanic应用,你需要从Gunicon的worker-class参数中使用特殊的sanic.worker.GunicornWorker

gunicorn myapp:app --bind 0.0.0.0:1337 

--worker-class sanic.worker.GunicornWorker

如果您需要与其他应用程序(尤其是循环)共享SANIC过程,那么这是合适的。但是,请注意,此方法不支持使用多个进程,并且通常不是运行应用程序的首选方法

更多信息,查看Gunicorn 文档

1.4,禁止调试的日志

要提高性能,请在运行参数中添加debug=false和access_log=false

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

通过gunicorn运行,您可以设置环境变量sanic_access_log=“false”

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

1.5,支持异步

如果您需要与其他应用程序(尤其是循环)共享SANIC过程,那么这是合适的。但是,请注意,此方法不支持使用多个进程,并且通常不是运行应用程序的首选方法。

以下是一个不完整的示例(请参阅示例中的run_async.py了解更实用的内容)

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

sanic官方文档解析之Deploying(部署)和Extension(扩展)的更多相关文章

  1. sanic官方文档解析之Example(二)

    1,通过docker部署sanic项目 通过Docker和Docker Compose部署SANIC应用程序是一项很容易实现的任务,下面的示例提供了示例simple_server.py的部署 FROM ...

  2. sanic官方文档解析之Example(一)

    1,示例 这部的文档是简单的示例集合,它能够帮助你快速的启动应用大部分的应用,这些应用大多事分类的,并且提供给ini工作的连接代码: 1.1,基础示例 这部分示例集成了提供简单sanic简单的代码 单 ...

  3. sanic官方文档解析之Custom Protocols(自定义协议)和Socket(网络套接字)

    1,Custom Protocol:自定义协议 温馨提示:自定义协议是一个高级用法,大多数的读者不需要用到此功能 通过特殊的自定义协议,你可以改变sanic的协议,自定义协议需要继承子类asyncio ...

  4. sanic官方文档解析之路由

    1,路由,路由相当于一个网址的地址,来确定网址的位置和唯一性 当http://server.url/被允许访问服务器,当最后的"/"通过路由匹配到了业务逻辑处理的函数,将会返回一个 ...

  5. sanic官方文档解析之logging和request Data

    1,sanic的logging: Sanic允许有做不同类型的日志(通过的日志,错误的日志),在基于Python3的日志API接口请求,你必须具备基本的Python3的日志知识,在你如果想创建一个新的 ...

  6. sanic官方文档解析之下载和Configuration

    1,sanic框架是做什么的? sanic的官方网址:https://sanic.readthedocs.io/en/latest/ sanic框架是一个类似于flask框架的在Python3.5以上 ...

  7. sanic官方文档解析之ssl,debug mode模式和test(测试)

    1,ssl 示例: 可选择的SSLContent from sanic import Sanic import ssl context = ssl.create_default_context(pur ...

  8. sanic官方文档解析之streaming(流动,滚动)和class_based_views(CBV的写法)

    1,streaming(流媒体) 1.1请求流媒体 Sanic允许你通过流媒体携带请求数据,如下,当请求结束await request.stream.read()就会返回None,仅仅只有post请求 ...

  9. sanic官方文档解析之websocket(网络套接字)和handle decorators(处理程序装饰器)

    1,websocket(网络套接字) 在websocket上Sanic提供了一种简单使用的抽象化,来设置websocket(网络套接字) from sanic import Sanic from sa ...

随机推荐

  1. poj 1066 Treasure Hunt 线段相交

    题目链接 题目描述 一个正方形房间被分成若干个小室,宝藏在其中某一点.现可炸开任意一堵墙壁的中点位置.问至少要炸开多少堵墙才能从外面到达宝藏所在地. 思路 (很巧妙,没想到) 直接枚举墙壁与正方形外壁 ...

  2. 使用Vim比较两个文件的内容

    原文地址:http://blog.chinaunix.net/uid-22548820-id-3477464.html 1. 使用vim的比较模式打开两个文件: vim -d file1 file2 ...

  3. What is pseudopolynomial time? How does it differ from polynomial time?

    To understand the difference between polynomial time and pseudopolynomial time, we need to start off ...

  4. PL/SQL Developer工具包和InstantClient连接Oracle 11g数据库

    一.前言 PLSQL Developer是Oracle数据库开发工具,很牛也很好用,PLSQL Developer功能很强大,可以做为集成调试器,有SQL窗口,命令窗口,对象浏览器和性能优化等功能. ...

  5. Oracle服务扫描工具Oscanner

    Oracle服务扫描工具Oscanner   Oracle是甲骨文公司推出的关系型数据库,适用于中大规模数据存储,如大型企业.电信.银行等行业.Kali Linux集成了Oracle服务扫描专向工具O ...

  6. GPP加密破解工具gpp-decrypt

    GPP加密破解工具gpp-decrypt   GPP是Group Policy Preferences(组策略首选项)的缩写,这是一个组策略实施工具.通过该工具,网络管理员可以实现更多的网络管理,如驱 ...

  7. CDOJ_24 八球胜负

    8球是一种台球竞赛的规则.台面上有7个红球.7个黄球以及一个黑球,当然还有一个白球.对于本题,我们使用如下的简化规则:红.黄两名选手轮 流用白球击打各自颜色的球,如果将该颜色的7个球全部打进,则这名选 ...

  8. java正则表达式的知识

    /** 用途:正则表达式 * 创建人:向家康 * 创建日期:2019年4月21日 下午9:59:08 */ //有了登录界面当然少不了正则表达式啦,这是做项目必备的知识点 //通过本博客的代码,想必即 ...

  9. rocketMq---------相关命令

    搭建就不详细说了,cent7.x的系统,openJdk8,maven3.x,gradle4.10.2, git 1.8.3.1 直接下载相关的二进制压缩包,解压即用,方便. 下面看常用的管理命令 ro ...

  10. 【Maven jar】打包单个或多个文件,有依赖jar包的将架包一起打包成一个jar包供别的项目引用

    之前有一片文章,是打包单个java文件的.这次想要将http://www.cnblogs.com/sxdcgaq8080/p/8398780.html  打包成jar包,发现这个java文件中引用了多 ...