位置: 编程技术 - 正文

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

  • 没有成本发票怎么缴纳企业所得税
  • 营改增抵减的销项税额会计分录
  • 建筑服务增值税税率
  • 增值税先征后退会计处理
  • 个税返还什么时候到账
  • 快递公司快递人员工资记入什么会计科目
  • 资产负债表是根据什么填的
  • 不计入销售收入
  • 哪些费用的进项税可以抵扣
  • 其他应收款贷方余额表示什么
  • 弥补以前年度亏损会计分录
  • 流动资产增幅
  • 纳税人少缴税款,税务机关发现之日怎么算
  • 哪些单位和个人可构成全宗
  • 存货转为公允价值怎么算
  • 车购税退税需要多长时间
  • 文化事业建设费怎么计算
  • 固定资产清理如何做账
  • 库存商品期末计量
  • 然后销售产品
  • 增值税普通发票税率
  • 企业所得税一般纳税人是怎么缴纳的
  • 收据能入账抵税吗
  • 酒店小规模纳税人税率
  • 初级备考日记
  • 金蝶软件入库
  • 金蝶如何结转折旧费用的操作步骤
  • 总公司资金转入私人账户
  • windows10 20h2 2004
  • 去实体店装win10专业版多少钱
  • PHP:sys_getloadavg()的用法_misc函数
  • 最高像素是什么
  • 新英格兰的秋天
  • 预提费用新会计准则叫什么科目
  • 债券投资账务处理例题
  • 公司挂靠社保的人员需要申报个人所得税吗?
  • Thinkphp事务操作实例(推荐)
  • php对数组进行排序
  • thinkphp5框架介绍
  • wordpress添加css
  • token验证器
  • 企业应收是什么意思
  • 预收款预缴增值税如何核算的
  • 处置固定资产账务处理进什么科目
  • sql server查询前1000条纪录
  • python的np.array
  • 收伙食费入什么科目
  • 财务报表的填写要求
  • 通过SQLServer 2008 操作 MySQL的方法
  • 增值税进项税额转出的情况有哪些
  • 合伙企业年终分红会计分录
  • 不征税收入怎么做会计分录
  • 付出对价的公允
  • 投资收益影响营业额吗
  • 加权平均净资产收益率
  • 企业取得租车发票
  • 上一年度企业所得税汇算清缴会计分录
  • 个人为什么不能购买永续债
  • 建设工程施工管理
  • 与其他公司合伙协议书
  • 发票作废了还能恢复吗?
  • 出售固定资产属于什么收入
  • mysql复制数据
  • Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程
  • mysql 5.7.11 winx64.zip安装配置方法图文教程
  • 各种linux
  • 多系统安装方法
  • 彻底禁止win11自动更新
  • win8系统设置
  • onenotewindows10
  • shnlog.exe - shnlog是什么进程 有什么用
  • linux终端怎么用
  • unity动画调速度
  • android基于什么语言
  • 批处理应用实例
  • bat批处理命令大全
  • nodejs跳转到指定页面
  • 哪些润滑油属于润滑剂
  • 世界第二十八高峰
  • 四川税控
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设