位置: 编程技术 - 正文

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

  • 所得税的会计分录怎么做
  • 非员工私车公用怎么进行账务处理
  • 企业减少注册资金需要缴税吗
  • 补贴收入是否交个税
  • 前期费用包括哪些,占总投资的比例
  • 广告公司开票能开劳务费吗
  • 办理契税需要的户口本复印件可以吗
  • 预缴企业所得税会计处理
  • 购买资产佣金应该怎么算
  • 企业用于存货的支出
  • 营改增后如何计算税金
  • 购买的专利可以进费用吗
  • 委托贷款利息收入现金流
  • 小微企业减免所得税
  • 农产品收购抵扣税额可以申请留抵退税
  • 出口企业收到的货款是人民币还是美元
  • 预付股权转让款如何处理
  • 收到赞助费开什么发票
  • 支付给董事的董事费怎么征收个人所得税?
  • 债务转为资本什么意思
  • 会计核算的主要依据是什么
  • 模具费属于什么费用
  • 安全系统不起作用或未正确安装 cad2016
  • 在win7中,为什么打开盘符在新窗口中出现?
  • 收到广告费收入怎么做分录
  • 没有进项发票的货物能算成本吗
  • soft version
  • encodetext
  • 计提本月应交税金会计分录
  • 冈山平原
  • 下载文件是php
  • php __destruct
  • 增值税专用发票上注明的价款含税吗
  • 公司年终奖怎么入账
  • 差额征税怎么交税
  • 律师费怎么要回来
  • 固定资产原值怎么确定
  • 通行费电子发票平台
  • 金蝶会计报表公式
  • 公司开具手工发票怎么开
  • mysql的备份方式
  • dedecms使用教程
  • mongodb索引使用正则表达式
  • 三代手续费操作流程
  • 个人独资企业最新税收政策
  • 专票认证是在开票软件里吗
  • 小规模如何缴纳税款
  • 购买二手车后
  • 建筑行业如何结算工程款
  • 坏账准备的计提分录
  • 装修费未计入长期费用
  • 对于财务的简单理解
  • 交去年的企业所得税吗
  • 持有至到期投资是债权投资吗
  • 员工出差的餐费可以抵扣吗
  • 个体工商户对公账户需要交税吗
  • 弥补上年亏损的分录 所得税
  • 半个固定资产如何折旧
  • win10系统如何将c盘的软件移到d盘
  • server core安装完成后按什么进行登录
  • mac电脑快速查询
  • winadm.exe - winadm是什么进程
  • itunes清理iphone垃圾
  • navapp.exe - navapp是什么进程文件 作用是什么
  • linux如何查看防火墙配置
  • linux使用范围
  • linux012
  • 批处理 >nul
  • qt::windowtype
  • vue中使用ajax
  • 苹果多点触控
  • 用vue做项目加入购物车是怎么做到的
  • 关于Air端与android端的通信实现
  • javascript教程完整版
  • boostrapping
  • 深入理解linux内核第三版
  • 海南税务局增值税按次缴纳
  • 江苏省国家税务局
  • 中建七局企业精神是什么
  • 江苏房产税如何计算公式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设