位置: 编程技术 - 正文

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

  • 息税前利润含义
  • 建设部门罚款会计分录
  • 兼职会计负责的工作内容
  • 公司不营业需要做年报吗
  • 税费的计提和缴纳
  • 冲回存货跌价准备计提递延所得税
  • 银行汇票怎么填写
  • 将外购商品作为非货币性
  • 净资产利润率等于净资产收益率吗
  • 公司开出的经济补偿金可以税前扣除吗
  • 个体户没有三证合一,年检
  • 房地产不可销售的物业有哪些
  • 无形资产投资入股增值税
  • 税收滞纳金和税金滞纳金有什么区别
  • 汇算清缴截止
  • 企业有哪些o
  • 房地产预收账款结转到主营业务收入
  • 电子税务局社保申报截止日期每月
  • 向境外支付违约金要代扣税吗
  • 劳务派遣差额征税税率是多少
  • 补付工程款会计分录
  • 装修费怎么摊销,租期两年
  • 待清算专户
  • 残疾人保障金是强制性的吗
  • 怎么升级鸿蒙系统3.1
  • 税金及附加多计提所得税年报怎么更正
  • .inc是什么文件
  • PHP:mb_preferred_mime_name()的用法_mbstring函数
  • 普通发票主营业务怎么填
  • 退回已修改是什么意思
  • vite配置详解
  • 含工资表的会计科目
  • php框架的作用
  • 应收账款的作用及其管理意义
  • 帮别人开增值税专用发票
  • 提租补贴计入个税吗
  • 应收账款为负数正常吗为什么
  • 房地产企业季度所得税预缴扣除附加税吗
  • 水利基金忘记申报怎么查
  • 织梦自定义字段
  • mysql的文件格式有哪些
  • mongodb视频教程
  • 盈余公积和资本溢价
  • 代扣代缴通用缴款书怎么打印
  • 关于出售使用过的产品
  • 有限合伙企业中有限合伙人承担责任的方式为
  • 国有独资企业董事会成员组成规定
  • 离线开票时间超限怎么办 发票都已经报送
  • 甲企业于2019年3月1日以2000万元取得乙上市公司
  • 暂估入库成本差异
  • 企业营业利润率怎么算
  • 对于审核后的凭证可直接修改对吗
  • 跨年退货怎么处理账务
  • 公司打款账号模板图片
  • 如何解绑企业微信绑定的邮箱
  • 服装店的财务会计怎么做
  • 企业购买黄金如何入账
  • sql server怎么向表里添加数据
  • 电脑主板bios是什么意思
  • ubuntu开发板
  • win8.1安装程序无法确定支持的安装选项
  • linux 清除垃圾
  • js闭包的理解详解
  • cocos2d-x教程
  • exit(1)和return的区别
  • js实现分页数据库数据
  • nodejs跳转到指定页面
  • linux 映射 fn键
  • shell for awk
  • 批处理设置ip地址配置的dns
  • 一道关于医用口罩的数学题初二
  • 搭建简单的spike课程
  • cmd 更改密码
  • jquery中的css方法
  • python生成随机数据
  • js判断checkbox是否被选中
  • jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
  • Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
  • 广州市地税局副局长
  • 国税局调地方
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设