位置: 编程技术 - 正文

Python部署web开发程序的几种方法(python web开发环境搭建)

编辑:rootadmin

推荐整理分享Python部署web开发程序的几种方法(python web开发环境搭建),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python web程序开发,python web 部署,python怎么部署web项目,python web 部署,python 开发web,python开发web应用程序,python部署web项目,python web开发环境搭建,内容如对您有帮助,希望把文章链接给更多的朋友!

1、fastcgi ,通过flup模块来支持,在nginx里对应的配置指令是 fastcgi_pass

2、http,nginx使用proxy_pass转发,这个要求后端appplication必须内置一个能处理高并发的http server,在python的web框架当中,只能选择tornado.

3、uwsgi,包括4部分组成:

uwsgi协议 web server内置支持协议模块 application服务器协议支持模块 进程控制程序

nginx从0.8.4开始内置支持uwsgi协议,uwsgi协议非常简单,一个4个字节header+一个body,body可以是很多协议的包,比如说http,cgi等(通过header里面字段标示)。

uwsgi的特点在于自带的进程控制程序.它是用c语言编写,使用natvie函数,其实和spawn-fcgi/php-fpm类似。所以uwsgi可以支持多种应用框架,包括(python,lua,ruby,erlang,go)等等

4、mod_python,这是apache内置的模块,很严重的依赖于mod_python编译使用的python版本,和apache配套使用,不推荐

5、cgi,这个太old,不推荐,而且nginx不支持cgi方式,只能用lighttpd或者apache

6、spawn-fcgi,这个是fastcgi多进程管理程序,lighttpd安装包附带的,和 flup效果一样,区别是flup是 python代码级引入,spawn-fcgi是外部程序。spawn-fcgi用途很广,可以支持任意语言开发的代码,php,python,perl,只要你代码实现了fastcgi接口,它都可以帮你管理你的进程

7、scgi,全名是Simple Common Gateway Interface,也是cgi的替代版本,scgi协议很简单,我觉得和fastcgi差不多,只是没有怎么推广开来,nginx对应的配置指令是scgi_pass,你想用就用,flup也支持。

8、Gunicorn,和uwsgi类似的工具,从rails的部署工具(Unicorn)移植过来的。但是它使用的协议是 WSGI,全称是Python Web Server Gateway Interface ,这是python2.5时定义的官方标准(PEP ),根红苗正,而且部署比较简单, 上有详细教程

9、mod_wsgi,apache的一个module,也是支持WSGI协议, install uwsgi

配置uwsgi

uwsgi 有多种配置可用:

配置示例

配置参数详解:

常用选项:

socket : 地址和端口号,例如:socket = .0.0.1:

processes : 开启的进程数量

workers : 开启的进程数量,等同于processes(官网的说法是spawn the specified number of workers / processes)

chdir : 指定运行目录(chdir to specified directory before apps loading)

wsgi-file : 载入wsgi-file(load .wsgi file)

stats : 在指定的地址上,开启状态服务(enable the stats server on the specified address)

Python部署web开发程序的几种方法(python web开发环境搭建)

threads : 运行线程。由于GIL的存在,我觉得这个真心没啥用。(run each worker in prethreaded mode with the specified number of threads)

master : 允许主进程存在(enable master process)

daemonize : 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器(daemonize uWSGI)。实际上最常用的,还是把运行记录输出到一个本地文件上。

log-maxsize :以固定的文件大小(单位KB),切割日志文件。 例如:log-maxsize = 就是M一个日志文件。

pidfile : 指定pid文件的位置,记录主进程的pid号。

vacuum : 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件(try to remove all of the generated file/sockets)

disable-logging : 不记录请求信息的日志。只记录错误以及uWSGI内部消息到日志中。如果不开启这项,那么你的日志中会大量出现这种记录:

[pid: |app: 0|req: /] ... () { vars in bytes} [Thu Jul 7 :: ] POST /post => generated bytes in 6 msecs (HTTP/1.1 ) 2 headers in bytes (1 switches on core 0)

配置nginx

配置application

flask 示例

启动uwsgi

FCGI

参考: fastcgi虽然是二进制协议,相对于http协议,并不节省资源。二进制协议,只能节省数字的表达,比如 ,用字符串表示需要7个Byte,用数字就是4个Byte,而字符串到哪里都一样 fastcgi在传输数据的时候,为了兼容cgi协议,还要带上一堆cgi的环境变量,所以和http协议相比,用fastcgi传输数据并不省,反而多一些 fastcgi 唯一的优点是,它是长连接的,用户并发个request,fastcgi可能就用个 链接转发给后端的appplication,如果用http协议,那来多少给多少,会向后端appplication 发起个请求 http代理转发方式,在面对超高并发的情况下会出问题,因为,tcp协议栈当中,port是int整型 你本地新建一个connect,需要消耗一个端口,最多能到。外部并发几十万个请求,port池耗干,你的服务器只能拒绝响应了

CGI, FCGI, SCGI, WSGI 区别

WIKI Links:

CGI - - - -

Other reference:

= Common Gateway Interface

顾名思义,它是一种接口规范。该规范详细定义了Web服务器中运行的服务器代理程序,怎样获取及返回网页生成过程中,服务器环境上下文和HTTP协议中的参数名称,如大家所熟知的:REQUEST_METHOD,QUERY_STRING,CONTENT_TYPE等等。绝大部分的Web服务器程序,是以脚本的形式代理接受并处理HTTP请求,返回HTTP页面或响应。这些脚本程序,就是大家所熟知的PHP、ASP、JSP等等。

FCGI = Fast CGI

它其实是CGI在具体实现中的的一个变种。其设计思路是,通过减少CGI代理程序和Web宿主服务程序的通信开销,从而达到提高Web服务性能的最终目的。由此可见,FCGI在规范上跟CGI并没有不同,只是具体实现方式上有所改进:CGI的做法是,对于每个HTTP请求,Web宿主服务程序都建立新的进程以调用服务器脚本,相应该请求;FCGI的做法是,建立一个独立的FCGI服务程序进程,和Web宿主服务程序进程通信,FCGI服务进程被一旦启动后,自己分配资源、创建线程响应HTTP请求、并决定自身生命周期,从而大大降低了系统为了创建进程而做出的资源开销。现代流行的Web服务器程序,如PHP、ASP.Net,基本都是FCGI的实现。

SCGI = Simple CGI

它是FCGI在精简数据协议和响应过程后的产物。其设计目的是为了适应越来越多基于AJAX或REST的HTTP请求,而做出更快更简洁的应答。并且SCGI约定,当服务器返回对一个HTTP协议请求响应后,立刻关闭该HTTP连接。所以不难看出,SCGI更加适合于普遍意义上SOA所提倡的“请求-忘记”这种通信模式。

WSGI = Web Server Gateway Interface

此协议是Python语言的专利,它定义了一组在Web服务宿主程序和HTTP响应代理程序之间通信的普遍适用的接口。它的产生是因为Python程序员注意到,对于Web框架和Web宿主服务器程序间,有严重的耦合性,比如说,某些框架是针对Apache的mod_python设计的。于是,WSGI就定义了一套非常低级别的接口。常见的Python Web框架都实现了这个协议:如 CherryPy, Django, web.py, web2py, TurboGears, Tornado, Pylons, BlueBream, Google App Engine[dubious ? discuss], Trac, Flask, Pyramid,等等.

标签: python web开发环境搭建

本文链接地址:https://www.jiuchutong.com/biancheng/375622.html 转载请保留说明!

上一篇:Python中异常重试的解决方案详解(python 异常处理方法)

下一篇:Python实现统计文本文件字数的方法(python进行统计分析)

  • 免抵税额计入什么科目
  • 递延所得税负债账务处理
  • 小规模纳税人在选择供应商时,主要考虑购进货物
  • 报表中存货包括什么科目
  • 后期装修改造费用计入什么科目
  • 收到借款利息如何计算
  • 城建税可以不交吗
  • 小规模升一般纳税人怎么操作
  • 小规模收到房租专票进项做账分录
  • 残保金是谁支付给单位?
  • 房地产企业分立会计处理及税务筹划案例解析
  • 事业单位退休职业年金发放多少个月
  • 转租收入怎样缴税
  • 不能税前扣除的费用有哪些
  • 长期待摊费用计提摊销的会计分录
  • 全年亏损,但季度预交企业所得税,汇算时怎么调平
  • 发票上面税率地方为*号代表什么
  • 软件企业两免三减半税收政策到期
  • 非正常损失的购进货物进项税不能抵扣
  • 契税如果没有按时交会怎么办
  • 个人取得下列各项所得须自行申报纳税的有
  • 借款利息不能抵扣进项税
  • 企业所得税季报资产总额怎么填
  • 普通发票要写增值税吗
  • 保险企业准备金是什么
  • 分期收款发出商品属于什么科目
  • 长期负债在报表哪里看
  • 财务报表包括哪几个表
  • 所有者权益变动表范本
  • 怎么做win8系统u盘pe
  • 初学者如何
  • windows11正式版本
  • fxssvc.exe
  • 招标场地费计入什么科目
  • 简易计税办法和一般计税办法
  • 固定资产一次性扣除申报表怎么填
  • 银行本票存款和银行存款的区别
  • 临时用工账务处理流程
  • php连接mysql8.0
  • [Vue warn]: Error in created hook: “TypeError: Cannot read properties of undefined (reading ‘$on‘)“
  • php7.3
  • 一般业务计算的基本步骤
  • 一觉醒后浑身酸痛
  • Win11系统自带输入法怎么卸载
  • 如何更改电子税务局办税人员
  • 递延所得税资产借贷方向
  • 什么情况下开劳务费发票
  • db2原理
  • 企业出租无形资产使用权取得的收入应计入
  • 税收分类口诀
  • 小规模纳税人1%税率优惠政策
  • 企业罚钱合理吗
  • 房地产个税是什么意思
  • 增值税纳税申报类型有哪些
  • 收到股东投资款需要交印花税吗
  • SQLserver行转列
  • 改变记帐方式的原因
  • 盈利性幼儿园怎么办理
  • 教育费附加和地方教育费附加都要交吗
  • 管理费用如何结转成本
  • 保险公司理赔款如何入账
  • mysql查询倒数第二个字母为a
  • sql server删除重复数据保留一条
  • 两台电脑如何共享网络
  • centos中rpm包怎么安装
  • win10手机版微信uwp下载
  • 苹果官网
  • nicconfigsvc.exe - nicconfigsvc是什么进程 有什么用
  • perl数组去重
  • bash 删除文件夹
  • jquery1.8
  • 用jquery
  • 安卓apk混淆工具
  • linux c语言获取当前路径
  • vue使用jssdk
  • jabsorb笔记_几个小例子第1/2页
  • 重庆地方税务局12366
  • 新疆高龄补贴2024发放标准是多少
  • 威海行风热线实时收听
  • 中俄改订条约收回哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设