位置: 编程技术 - 正文

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进行统计分析)

  • 个人所得税本期收入是扣完保险吗
  • 运输服务的增值税是多少
  • 小规模纳税人销售额
  • 报表中应交税金和应交税费区别
  • 银联交易手续费
  • 出口退税进项税额可以抵扣吗
  • 购入的固定资产
  • 企业应纳税所得额计算例题
  • 图书出版费开票怎么开
  • 承租人转租需要退押金吗
  • 个人交物业费开发票交税点吗
  • 退税勾选后怎么申报
  • 出口退税进项税额转出的计算
  • 个体户没有对公账户可以转个人账户吗
  • 无形资产摊余价值不含减值
  • 盈余积累转增资本的条件
  • 暂估入账冲回
  • 预售房款预缴企税怎么算
  • 专票一年可以抵扣吗
  • 当月交当月社保费会计分录
  • kb4507449安装失败
  • 境外人员定义
  • 消费税不可抵扣已纳税款
  • 外出经营范围
  • 冲红的销项税怎么结转
  • 使用微软必应需要哪些条件
  • 前端底层架构是什么意思
  • 仓库发货打包以及建议年终总结
  • python读取TXT文件代码
  • 银行存款向灾区捐款
  • 旅行社专票开票内容的规定
  • 期货收入交个人所得税吗
  • 企业提前还贷为什么违约
  • 缴纳上年汇算清缴的分录
  • 代收代付进项税转出吗
  • 番茄开发票属于蔬菜吗?
  • 根据sql脚本修改数据类型
  • 股权收购协议书实际案例
  • 怎样计提税金及附加
  • 境外服务费代扣代缴所得税怎么做账
  • 去年企业所得税多计提怎么调整
  • 哪些进项发票不能认证
  • 材料暂估入库需要什么原始凭证
  • 福利费发票抵扣了有什么后果
  • 期初固定资产算收入吗
  • 安置用房视同销售,怎么确认扣除费用?
  • 企业比赛奖金要交税吗
  • 契税为什么计入成本费用
  • 金蝶的数量金额明细账是怎么做的
  • 企业注销固定资产清理税务处理
  • 电子承兑汇票接收不了怎么办
  • 软件开发收费标准
  • Linux下安装mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
  • SQL Server2005、2008如何彻底删除卸载并重新安装?
  • linux系统怎么安装
  • centos文档
  • 设置u盘为只读
  • win7控制面板有哪些功能
  • windows10周年更新
  • win8n
  • Win10预览版镜像
  • 按住鼠标右键拖动文件
  • Android自定义控件高级进阶与精彩实例
  • shell字符串截取加替换
  • jquery操作html代码
  • jquery实现隔行变色的分享特效页面
  • 九宫寓意和象征
  • particular粒子怎么用
  • android 快速开发工具
  • javascript如何学
  • 如何彻底删除android
  • [置顶]津鱼.我爱你
  • 晋城兰花集团招聘
  • 重庆市税收排名地区
  • 上海税务ca证书更新
  • 新车购置税是多少
  • 安徽国家税务局网上办税平台12366
  • 海口税务服务大厅
  • 食堂增值服务有哪些
  • 养猪环保局有什么新政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设