当前位置:首页 » 编程语言 » wsgipython

wsgipython

发布时间: 2022-05-16 09:17:18

⑴ WSGI python的问题

多开一个端口有什么问题?127.0.0.1:xxx 端口并不会被外界访问,基本没有安全问题。或者,让 fastcgi 程序跑在 UNIX socket 上,这是文件系统的一个文件,不占用 TCP/IP 端口号。python - Django, nginx, FastCGI两个程序之间通信,总需要一个端口,要么 TCP/IP,要么 UNIX socket。如果要让 Python 解释器直接跑在 Nginx 引擎里,这就类似 Apache mod_python 的做法了,会让进程变重。OpenResty.org 是在 nginx 里跑 Lua,Python 还没听说过。

⑵ 后缀名为‘wsgi’的文件是什么文件在python中可以作为模块导入吗

你用任何的文本编辑器打开看看,如果是python的script,就可以用python导入。
后缀是wsgi的一般是用python写的wsgi程序。

⑶ Python几种主流框架比较

Django:Python界最全能的Web开发框架,各种功能完备,可维护性和开发速度都非常强大。常有人说Django慢,其实主要慢在Django
ORM与数据库的交互上,所以是否选择使用Django,取决于项目对数据库交互性的要求以及各种优化。
而对于Django的同步特性导致吞吐量小的问题,其实可以通过Celery等解决,不算是什么根本问题。Django代表的项目有:Instagram、guardian等。
Flask:属于微框架的典范,也是Python代码写的最好的项目之一。Flask框架的灵活性很高,但也是一把双刃剑,能用好Flask的,可以做成Pinterest,用不好就没有什么太大的作用了。Flask虽然属于微框架,但也可以做成规模化的Flask,加上flask可以自由选择自己的数据库交互组件,再加上celery+redis等异步特性以后,flask框架的性能非常不错,之所以很多团队选择flask框架,主要原因就是对灵活性的要求。
Tornado:天生异步,性能强悍,这是它的代名词。对比Django而言,Tornado属于较为原始的框架,诸多内容需要自己去处理。不过,随着项目的不断壮大,框架能够提供的功能占比越来越小,更多的内容需要团队自己去实现,而大项目往往需要性能的保证,这时候Tornado就是非常不错的选择。代表项目:知乎等。

⑷ 如何使用WSGI部署Django

如何使用Apache 和mod_wsgi 部署Django¶
用Apache 和 mod_wsgi 部署Django项目是一个第三方的,测试的方法来得到Django生产环境。
mod_wsgi是一个Apache模块,可以托管任何Python WSGI应用程序,包括Django。Django将与支持mod_wsgi的任何版本的Apache一起工作。
官方mod_wsgi文档是太棒了!它是所有关于如何使用mod_wsgi的细节的来源。您可能需要先从安装和配置文档开始。
Basic configuration¶
一旦您安装并激活了mod_wsgi,请编辑Apache服务器的httpd.conf文件并添加以下内容。如果你的Apache版本低于2.4, 请将 Requireall granted 替换成 Allow from all 并在上一行添加 Order deny,allow .
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

WSGIScriptAlias行中的第一个位是您要在其上(/指示根URL)的服务应用程序的基本URL路径,第二个位置是“ WSGI文件“ - 见下面 - 在您的系统上,通常在您的项目包(在本例中mysite)。这告诉Apache使用该文件中定义的WSGI应用程序来提供给定URL下面的任何请求。
The WSGIPythonPath line ensures that your project package is available for import on the Python path; in other words, that importmysite works.
The <Directory> piece just ensures that Apache can access your wsgi.py file.
接下来,我们需要确保这个wsgi.py与WSGI应用程序对象存在。从Django版本1.4起,startproject将为您创建一个;否则,您需要创建它。请参阅WSGI overview documentation以获取您应该放入此文件的默认内容,以及您可以添加到其中的其他内容。
警告
如果多个Django站点在单个mod_wsgi进程中运行,则所有这些站点将使用首先运行的设置。这可以通过改变:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")

在wsgi.py中:
os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings"

或者通过using mod_wsgi daemon mode,并确保每个站点在其自己的守护进程中运行。
使用虚拟机¶
If you install your project’s Python dependencies inside a virtualenv, you’ll need to add the path to this virtualenv’s directory to your Python path as well. 如果你的python项目在一个依赖虚拟机的python环境中,你需要将路径添加虚拟机的site-packages目录到你的python路径To do this, add an additional path to your WSGIPythonPath directive, with multiple paths separated by a colon (:) if using a UNIX-like system, or a semicolon (;) if using Windows.如果目录路径的任何部分包含空格字符,则必须引用WSGIPythonPath的完整参数字符串:
WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python3.X/site-packages

请确保为您的virtualenv指定正确的路径,并将正确的Python版本替换为python3.X。python3.4)。
采用mod_wsgi守护进程模式¶
“Daemon模式”是运行mod_wsgi的推荐模式(在非Windows平台上)。需要通过WSGIDaemonProcess和WSGIProcessGroup指令来实现Django实例运行在守护进程组中如果使用守护程序模式,则上述配置所需的进一步更改是您不能使用WSGIPythonPath;而应使用WSGIDaemonProcess的python-path选项,例如:
WSGIDaemonProcess example.com python-path=/path/to/mysite.com:/path/to/venv/lib/python2.7/site-packages
WSGIProcessGroup example.com

如果您要在子目录(本示例中为)中投放您的项目,可以将WSGIScriptAlias添加到上面的配置中:
WSGIScriptAlias /mysite /path/to/mysite.com/mysite/wsgi.py process-group=example.com

See the official mod_wsgi documentation for details on setting up daemon mode.
Serving files¶
Django不提供文件本身;它将该作业留给您选择的任何Web服务器。
我们建议使用单独的Web服务器(即不运行Django的服务器)来提供媒体。这里有一些很好的选择:
Nginx
Apache的精简版本
但是,如果您无法选择在与Django相同的Apache VirtualHost上提供媒体文件,则可以将Apache设置为将某些网址用作静态媒体,而将其他网址用于Django的mod_wsgi接口。
This example sets up Django at the site root, but explicitly serves robots.txt, favicon.ico, any CSS file, and anything in the /static/ and /media/ URL space as a static file. 所有其他网址将使用mod_wsgi:
Alias /robots.txt /path/to/mysite.com/static/robots.txt
Alias /favicon.ico /path/to/mysite.com/static/favicon.ico

Alias /media/ /path/to/mysite.com/media/
Alias /static/ /path/to/mysite.com/static/

<Directory /path/to/mysite.com/static>
Require all granted
</Directory>

<Directory /path/to/mysite.com/media>
Require all granted
</Directory>

WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

If you are using a version of Apache older than 2.4, replace Require all granted with Allow from all and also add the line Orderdeny,allow above it.
Serving the admin files¶
当django.contrib.staticfiles位于INSTALLED_APPS中时,Django开发服务器会自动提供管理应用程序(以及任何其他已安装的应用程序)的静态文件。但是,当您使用任何其他服务器布局时不是这样。您负责设置Apache,或您使用的任何Web服务器,以提供管理文件。
管理文件位于Django发行版的django/contrib/admin/static/admin中。
We strongly recommend using django.contrib.staticfiles to handle the admin files (along with a Web server as outlined in the previous section; this means using the collectstatic management command to collect the static files in STATIC_ROOT, and then configuring your Web server to serve STATIC_ROOT at STATIC_URL), but here are three other approaches:
在文档根目录中创建一个指向管理静态文件的符号链接(这可能需要Apache配置中的+FollowSymLinks)。
使用如上所示的Alias指令,将适当的网址(可能是STATIC_URL + admin/)别名到管理文件的实际位置。
复制admin静态文件,使它们存在于Apache文档根目录下。
Authenticating against Django’s user database from Apache¶
Django提供了一个处理程序,允许Apache直接对Django的身份验证后端进行身份验证。请参阅mod_wsgi authentication documentation。
If you get a UnicodeEncodeError¶
如果您正在利用Django的国际化功能(请参阅Internationalization and localization),并且您打算允许用户上传文件,则必须确保用于启动Apache的环境配置为接受非-ASCII文件名。如果未正确配置环境,则在调用类似于os.path中的函数时,将触发UnicodeEncodeError异常,该函数包含非ASCII字符。
为了避免这些问题,用于启动Apache的环境应包含类似于以下内容的设置:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

请查阅您的操作系统的文档以获取适当的语法和位置来放置这些配置项; /etc/apache2/envvars是Unix平台上的常见位置。将这些语句添加到环境后,重新启动Apache。
目录
如何使用Django与Apache和mod_wsgi
基本配置
使用virtualenv
使用mod_wsgi守护程序模式
提供文件
提供管理文件
对来自Apache的Django用户数据库进行身份验证
如果您得到UnicodeEncodeError
浏览
上一页:如何使用WSGI部署
下一步:对来自Apache的Django用户数据库进行身份验证
你在这里:
Django 1.8.2.dev20150513143415 documentation
部署Django
如何使用Django与Apache和mod_wsgi
如何使用WSGI进行部署
“操作指南”
这一页
显示源
快速搜索
输入搜索字词或模块,类或函数名称。
最后更新:
2015年5月13日

⑸ wsgi.py是view文件吗

wsgi.py是view文件
所有文件和”程序“都可以用文本编辑器搞定,因为python是解释执行的,写好.py源码即可;apache的配置文件也都是纯文本文件。
文本编辑器推荐Notepad++,windows记事本太弱。。
关于具体的操作步骤,建议题主仔细网络一下,有很多教程可以参考。这里没法一两句话说清楚。
Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。

⑹ 如何部署python web程序

Python Web 程序的部署方案
综合而言, 高性能的Python web站点部署方式首推 nginx + uwsgi
apache + mod_wsgi 是简单稳定但性能一般的方式
API服务器 可以直接使用tornado或者gevent
mod_python
非常原始的cgi模式部署python已经没有什么好介绍了。对于不太追求性能的管理系统和网站来说,使用 Apache 部署是一个不错的选择。较早的时候,使用 mode_python 部署python的web应用十分流行,在Django 0.96 的时候官方文档甚至推荐这种方式。
它将Python解释器嵌入到Apache server,以提供一个访问Apache server内部的接口。mod_python 在现在看来性能是不佳的,每一个http请求 mod_python 都会由一个进程初始化python解释器、载入代码、执行、然后销毁进程。
mod_wsgi
如果非要用Apache来部署python应用,mod_wsgi是一个更好的选择。WSGI 全称是 Web Server Gateway Interface ,由 PEP-333 定义。 基本上所有的python web框架都实现了wsgi接口,用mod_wsgi 能部署任何实现了wsgi的框架。实际上,不需要任何框架也可以用mod_wsgi 部署python程序。使用mod_wsgi的daemon模式,python程序会常驻内存,不会有很大的初始化和销毁进程方面的开销,所以性能是好于mod_python的。综合来说,使用Apache部署python web程序,推荐使用mod_wsgi的daemon模式。
Fastcgi
先说观点:不建议用fastcgi的方式部署Python web。
前几年由于lighttpd风头正劲和豆瓣的成功案例,fastcgi是一种很流行的部署方式。fastcgi与具体语言无关,也与web服务器无关。是一种通用的部署方式。fastcgi是对于cgi的增强,CGI程序运行在独立的进程中,并对每个Web请求建立一个进程。面对大量请求,进程的大量建立和消亡使操作系统性能大大下降。
与为每个请求创建一个新的进程不同,FastCGI使用持续的进程来处理一连串的请求。这些进程由FastCGI服务器管理,而不是web服务器。 当进来一个请求时,web服务器把环境变量和这个页面请求通过一个socket比如FastCGI进程与web服务器都位于本地)或者一个TCP connection(FastCGI进程在远端的server farm)传递给FastCGI进程。
主流的web服务器,Apache,lighttpd,nginx 都支持fastcgi,在几年前,lighttpd的mod_fcgi模块性能强劲,lighttpd+fastcgi十分流行。无论是python,ruby还是php,都有大量的站点使用这种方式部署。由于nginx的崛起,现在很少有人使用lighttpd了。
fastcgi 并不是专门为python设计,并不是所有的python框架天然的支持fastcgi,通常需要flup这样的容器来配适。flup由python编写,和专门的c实现的wsgi容器比起来性能显得相当不堪。fastcgi的稳定性对于新兴的wsgi容器来说也有差距。无论从哪个方面来看,部署python web程序,fastcgi 都已经是过去式。
uwsgi
前几年nginx还未内置uwsgi模块的时候,部署uwsgi还是一件挺麻烦的事情。随着能够在nginx中直接使用uwsgi模块,uwsgi已经是最可靠,最方便的高性能python web程序的部署方式了。
在1U的四核XEON服务器上,一个简单的wsgi handler甚至能用AB压到8000以上的qps,这已经是完爆tornado,接近gevent的性能了。 同时,uwsgi的稳定性极好。之前我们有个每天500w-1000w动态请求的站点使用uwsgi部署非常稳定,在一个渣HP 1U 服务器上,基本不用管它。
上面提到的部署方式都是相对于web网站的方式,在移动互联网的时代,我们需要的是高性能的API服务,上面这些都是过时的东西。
tornado
tornado 号称高性能,如果拿他写网站,其实一般般,只不过跟uwsgi加一些简单框架差不多而已。它真正的作用,是用来写API服务器和长连接的服务器。
由于tornado能够直接处理http请求,很多人直接拿他来裸奔直接提供服务。这种方式是不可取的,单线程的tornado只能利用cpu的一个核心,并且一旦阻塞直接就废了。通常情况下,由supervisor启动多个tornado进程,通过nginx进行反向代理负载均衡。nginx 1.14 以后的版本反向代理支持长连接,配合tornado的comet效果很好。
tornado还有一些比较奇葩的用法,比如用来做wsgi容器之类的。
gevent
gevent是一个神器,能做的事情很多。在web方面,处理http请求,用起来其实跟tornado差不多,但是要简陋很多,cookie之类的都没有。用gevent写的一些API服务,部署方式还是类似tornado,用supervisor管理多个守护进程,通过nginx做负载均衡。 同样的它的奇葩用法也和tornado一样,可以当wsgi容器用。

⑺ python webservice和wsgi的区别

WSGI是Web Server Gateway Interface的缩写。以层的角度来看,WSGI所在层的位置低于CGI。但与CGI不同的是WSGI具有很强的伸缩性且能运行于多线程或多进程的环境下,这是因为WSGI只是一份标准并没有定义如何去实现。实际上WSGI并非CGI,因为其位于web应用程序与web服务器之间,而web服务器可以是CGI,mod_python(注:现通常使用mod_wsgi代替),FastCGI或者是一个定义了WSGI标准的web服务器就像python标准库提供的独立WSGI服务器称为wsgiref。
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。[1]
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
有些webservice是构建在wsgi上的,不过也可以不用的,两个不是同一个东西

⑻ 使用python的WSGI接口做的一个web应用,浏览器访问出现中文的时候显示乱码

我这边没有报错,你的文件编码是utf8的,你的path_info编码应该也是utf8的,不应该使用gb2312解码呀。

如果解决了您的问题请采纳!
如果未解决请继续追问

⑼ 关于python的wsgi问题,向各位大神求助

dows下python+wsgi配置!(求大神看下哪里错了)
LoadMole mod_wsgi_mole mole/mod_wsgi.so
<Directory "E:/site">
Options ExecCGI
AddHandler wsgi-script .py
Order allow,deny
Allow from all

</Directory>
这是我的配置信息,重启apache一直错误,反复搞不定,还有啥地方不对?是不要将py安装目录加path?还是哪里,或者机器不能安装俩个版本的py?(我安装了2.6和3.3)就这样的配置怎么启动py解释器呢!求大神给我看下把

⑽ 如何运行python wsgi app

这个要放在WEB服务器上运行,安装WEB服务软件IIS 等
然后安装相应python的模块就可以运行了

热点内容
编译原理上机实验构建预测分析器 发布:2024-04-30 00:05:47 浏览:571
安卓手机的应用商店是哪个 发布:2024-04-29 23:50:18 浏览:411
pythonbinascii 发布:2024-04-29 23:23:00 浏览:39
安卓怎么让运存变大 发布:2024-04-29 23:21:53 浏览:459
springmd5加密 发布:2024-04-29 23:03:50 浏览:31
如何选择服务器业务量 发布:2024-04-29 22:49:28 浏览:446
php怎样实现页面跳转页面 发布:2024-04-29 22:32:39 浏览:696
山东烟台电信dns服务器ip地址 发布:2024-04-29 21:22:59 浏览:137
数据库数据互通 发布:2024-04-29 21:19:02 浏览:155
pythonor的语法 发布:2024-04-29 21:07:48 浏览:703