,,Sanic框架应用部署方法详解

,,Sanic框架应用部署方法详解

本文主要介绍了Sanic框架的应用部署方法,结合实例分析了Sanic框架应用部署的具体流程、相关命令和使用技巧,并讲解了Gunicorn的配置方法,有需要的朋友可以参考。

本文通过一个实例描述了Sanic框架的应用部署方法。分享给你,供你参考,如下:

简介

Sanic是类似Flask的Python 3.5 Web服务器,写速度很快。除了Flask,Sanic还支持异步请求处理程序。这意味着您可以使用Python 3.5中新的出色的异步/等待语法来使您的代码无阻塞且快速。

在之前的博文中,我们已经讨论了如何使用Sanic开发Python守护进程。接下来,我们将记录如何部署Sanic应用程序。

部署

内置的web服务器简化了Sanic的部署。在定义了一个sanic实例之后。Sanic,您可以调用run()方法,然后传入以下关键字参数:

host:主机服务器地址,默认为127.0.0.1。

port:开始断开服务器。默认值为8000。

debug:启用调试输出,默认为假。

ssl:sslContext用于人员的SSL加密,默认值为None。

sock:服务器接受连接的套接字,默认为无。

wrokers:生成工作进程数;默认值为1。

loop:asyncio兼容的循环事件。如果未指定,Sanic将创建自己的事件循环,默认为None。

protocol:asyncio . protocol的子类,默认为HttpProtocol。

wrokers

默认情况下,Sanic在主进程中只使用一个CPU进行监控。有时,为了最大限度地利用资源,我们可以指定运行参数的工作进程数:

app.run(host='0.0.0.0 ',port=5000,wrokers=4)

Sanic会在多个进程中自动交换路由,所以如果有多个CPU的话,建议工人越多越好。

通过命令运行

如果您喜欢命令行参数,可以通过执行模块来启动Sanic服务器。例如,如果您使用文件名manager.py将Sanic初始化为app,您可以像这样运行服务器:

复制代码如下:python-msanicmanager . app-host=0 . 0 . 0 . 0-port=5000-workers=4

如果通过命令行运行sanic程序,则不需要调用Python文件中的app.run()方法。

通过Gunicorn运行

了解过Gunicorn的人都知道,Gunicorn是WSGI容器的一种,uWSGI比较常见(请参考附录Gunicorn配置说明)。

为了用Gunicorn运行Sanic程序,我们还需要设置worker-class参数,并将其设置为sanic.worker.GunicornWorker:

复制代码如下:guni corn manager:app bind 0 . 0 . 0:5000 worker-classsanic . worker . guni corn worker

如果您的应用程序遭受内存泄漏,您可以配置Gunicorn在完成指定数量的请求后正常重启工作程序,这有助于限制内存泄漏的影响。

附录:Gunicorn配置说明

在之前的文章《Python Web编程之WSGI协议》中,我们记录了WSGI容器的作用,我们知道唯一常见的容器是uWSGI和Gunicorn。在之前的《Python Web编程之WSGI协议》篇文章中,我们记录了它们的特点和优缺点,这里就不赘述了。接下来,我们将重点记录Gunicorn的一些配置:

config

-c配置,-配置配置

Gunicorn配置文件路径,一个字符串格式的路径形式,例如:

gunicorn -c gunicorn.conf管理器:app

bind

-b地址,-绑定地址

Gunicorn绑定服务器套接字,主机形式的字符串格式。Gunicorn可以绑定多个套接字,例如:

guni corn-b 127 . 0 . 0 . 1:8000-b[:1]:9000经理:应用程序

backlog

-积压

挂起连接的最大数量,即等待服务的客户数量。必须是正整数,一般设置在64~2048的范围内,一般设置为2048。超过此数量将导致客户端在尝试连接时出错。

workers

-w INT,- workers INT

用于处理的工作进程数,为正整数。默认值为1。建议的工作进程数是当前CPU数* 2 ^ 1。计算当前CPU数量的方法:

导入多重处理

打印多重处理. cpu_count()

worker_class

-k启动,-工人阶级启动

默认情况下,要使用的工作模式是同步。您可以将下列常见类型的“字符串”称为绑定类:

同步

Eventlet:需要下载eventlet=0.9.7。

Gevent:需要下载gevent=0.13。

龙卷风:龙卷风=0.2需要下载。

gthread

Gaiohttp:需要python 3.4和aiohttp=0.21.5。

threads

-线程整数

已处理的工作线程数,使用指定数量的线程运行每个工作线程。是正整数,默认值为1。

worker_connections

-工人-连接INT

并发客户端的最大数量,默认为1000。该设置将影响gevent和eventlet操作模式。

max_requests

-最大请求整数

重新启动前作业将处理的最大请求数。默认值为0。

max_requests_jitter

-最大请求数-抖动整数

要添加到max_requests的最大抖动。抖动会导致每个作业的重启随机化,这是为了避免所有作业都被重启。randint(0,最大请求抖动)

timeout

-t INT,-超时INT

这么多秒后,作业将被终止并重新启动。一般设置为30秒。

graceful_timeout

-优雅超时INT

优雅的人工超时,默认情况下,这个值是30。收到重启信号后,工作人员有那么多时间完成服务请求。超时后(从收到重启信号开始)仍然存活的工作将被强制终止。

keepalive

-保持活动INT

在保持活动连接上等待请求的秒数,默认情况下为2。通常设置在1到5秒之间。

limit_request_line

-限额请求行INT

HTTP请求行的最大大小。此参数用于限制HTTP请求行的允许大小。默认情况下,该值为4094。是一个数值,取值范围为0~8190。这个参数可以防止任何DDOS攻击。

limit_request_fields

-限制-请求-字段INT

限制HTTP请求中请求头字段的数量。该字段用于限制请求报头字段的数量以防止DDOS攻击,并且可以与limit-request-field-size一起使用以提高安全性。默认情况下,该值为100,不能超过32768。

limit_request_field_size

-限制-请求-字段-大小INT

限制HTTP请求中请求头的大小,默认情况下是8190。该值为整数或0。当该值为0时,表示对请求头的大小没有限制。

reload

-重新加载

当代码更新时,工作将重新开始,默认情况下为False。该设置用于开发,当应用程序发生变化时,将导致工作重新开始。

reload_engine

-重新加载-发动机启动

选择过载引擎,有三个支持的引擎:

汽车

Inotity:你需要下载它

spew

-呕吐

打印服务器执行的每个语句。默认值为False。该选项是原子性的,即全部打印或不打印。

check_config

-检查-配置

显示当前配置,默认值为False,即display。

preload_app

-预载

在复制(派生)工作进程之前加载应用程序代码,默认情况下为False。通过预加载应用程序,您可以节省RAM资源并加快服务器启动时间。

chdir

- chdir

在加载应用程序之前,将chdir目录指定到指定的目录。

daemon

-守护进程

Guard Gunicorn进程,默认为False

raw_env

-东环境,-环境环境

设置环境变量(key=value)并将变量传递给执行环境,例如:

guni corin-b 127 . 0 . 0 . 1:8000-e ABC=123经理:app

在配置文件中写入:

raw_env=['abc=123']

pidfile

-p文件,- pid文件

设置pid文件的文件名。否则,将不会创建pid文件。

worker_tmp_dir

- worker-tmp-dir DIR

设置工作临时文件目录。如果没有,将采用默认值。

accesslog

-access-日志文件文件

要写入的访问日志目录。

access_log_format

- access-logformat字符串

要写入的访问日志格式。比如:

access _ log _ format=' %(h)s %(l)s %(u)s %(t)s '

常见格式描述:

标识码

解释

h

远程地址

l

"-"

u

用户名

t

时间

r

行,如:GET /test HTTP/1.1

m

请求方法

U

没有查询字符串的URL

q

查询字符串

H

草案

s

状态代码

B

响应长度

b

响应长度(CLF格式)

f

涉及

a

美国联合航空公司(United Airlines)

T

请求时间,单位为秒

D

请求时间,毫秒

p

流程id

{Header}i

请求标题

{Header}o

相应的头部

{可变}e

环境变量

errorlog

-错误-日志文件,-日志文件文件

要写入错误日志的文件目录。

loglevel

-日志级别

错误输出电平。

支持的级别名称有:

调试(调试)

信息(信息)

警告(警告)

错误(错误)

关键(关键)

关于Gunicorn的更多配置,请参考:http://docs.gunicorn.org/en/stable/settings.html #服务器-力学

更多Python相关内容,请参考我们的专题:《Python入门与进阶经典教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》和《Python文件与目录操作技巧汇总》

希望本文对Python编程有所帮助。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • word文档无法编辑是怎么回事-
  • 华为手机怎么设置返回键(华为手机下面的三个按键设置方法)
  • lumia950怎么样(Lumia950体验分享)
  • otg连接是什么意思(OTG连接手机方法)
  • 笔记本触摸板怎么右键(笔记本电脑触控板手势操作设置)
  • 真我x7怎么样(realme X7 系列体验)
  • 苹果的A16处理器有多强(苹果的A16处理器的介绍)
  • 小米互传怎么用(小米手机的连接与共享教程)
  • 怎么设置电脑桌面图标自动对齐 设置电脑桌面自动整理图标的方法
  • 宽带错误651最简单解决方法(处理宽带错误651的措施)
  • 大学生手机有什么推荐(大学生换手机攻略)
  • 天玑1100和骁龙778g哪个好(骁龙778G、天玑900、天玑1100购选建议)
  • yum update 升级报错的解决办法
  • Windows10禁用屏保教程
  • 连接wifi显示无互联网连接怎么办(无线连上了却不能上网处理绝招)
  • 留言与评论(共有 条评论)
       
    验证码: