Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3中的Web网关接口_Python_Python 3.x_Fastcgi_Wsgi - Fatal编程技术网

Python 3中的Web网关接口

Python 3中的Web网关接口,python,python-3.x,fastcgi,wsgi,Python,Python 3.x,Fastcgi,Wsgi,我终于得出结论,我再也不能只希望正在进行的Py3k/WSGI灾难能够很快得到解决,所以我需要做好继续前进的准备 不幸的是,我的可用选项似乎并没有太好: 虽然我发现FastCGI有几个不同的Python模块分散在web上,但它们似乎都没有得到太多(如果有的话)的关注和/或维护,特别是关于Python3.x,而且很难区分哪一个(如果有的话)是真正可行的 一路回到内置CGI模块并不比自己从头开始构建更好(更糟糕的是,其中有一两个重要的bug可能在Python 3.3之前不会引起注意) 没有比在生产w

我终于得出结论,我再也不能只希望正在进行的Py3k/WSGI灾难能够很快得到解决,所以我需要做好继续前进的准备

不幸的是,我的可用选项似乎并没有太好:

  • 虽然我发现FastCGI有几个不同的Python模块分散在web上,但它们似乎都没有得到太多(如果有的话)的关注和/或维护,特别是关于Python3.x,而且很难区分哪一个(如果有的话)是真正可行的
  • 一路回到内置CGI模块并不比自己从头开始构建更好(更糟糕的是,其中有一两个重要的bug可能在Python 3.3之前不会引起注意)
  • 没有比在生产webapp中直接处理HTTP更高的罪恶了。不管怎么说,这仍然是重新发明轮子

肯定有人在3.x上部署webapps。您使用的网关接口是什么,使用哪些模块/库,以及为什么?

CherryPy 3.2候选版本支持Python 3.X。因为它只在web服务器接口层支持WSGI,而不支持整个堆栈,所以您与WSGI是否会更改的问题无关。CherryPy有自己的内部WSGI服务器,但也可以在Apache/mod_WSGI和Python 3.1+下运行。见:


瓶子支持Python 3,但它的stdlib坏了。但是,多部分重新实现了cgi.FieldStorage,并可与瓶子一起用于构建Python 3 WSGI web应用程序。我刚刚发表了一篇文章。目前,这只是一个测试,但据我所知,它工作得很好。

我还不知道有任何大牌(Django、Twisted、Zope)有Python 3端口,但这肯定是一个有用的工具question@Wayne:我说的是“网络应用”,但我现在关注的其实是其中的一个子集:基于网络的API(特别是当前项目上的SOAP,ick)。因此,我对大型第三方框架的依赖性较低,我当前的代码就在WSGI层。我没有将Python3与WSGI一起使用,因此我不熟悉您提到的问题。有什么好处(除了想成为早期采用者之外)为什么要使用Python3来实现这一点?@Wayne:2.7在上一个主要的2.x版本中。该分支已经死了,编写新代码可能会活上几年,甚至几十年,这取决于它是愚蠢的。与此同时,3.x实际上试图正确使用Unicode,有很多让生活更轻松的功能,有一个更好的规范化标准库,是新的目标“无负载的吞咽和其他性能的工作,如果我们把吉尔从cPython中解救出来,那就是它消失的地方。我在发布后几乎两年内都不认为是“早期采用者”):“尼古拉斯:嗯,你可以使用<代码> >从Y.Futurux<导入,这至少有助于保持转换的容易。我真的很担心。关于早期采用,你是对的——虽然我的语义指的是尚未移植到3.x的软件包的数量(大多数)。Graham,我非常尊重你,但这个答案基本上表明,我添加了对复杂框架的预发布版本的依赖性,除了将自己与WSGI“隔离”(这是我本来不应该需要的东西)。这非常令人不满意。考虑到缺乏其他答案,采用/移植一个FastCGI包装器并自行维护似乎是目前最可行的业务选择(我只是按照你的要求给你一些选项。如果你看看CherryPy文档页面上的那个版本,它还提到了它改进的FASTCGI支持。我读到的方式是,它有自己的FASTCGI适配器用于WSGI,也可以在Python 3.X上运行。目前,CherryPy是唯一一个试图找到解决方案的重要框架在Pyhon 3.X上运行的方式,因此肯定可以从中学习到一些东西。我所知道的唯一一个声称可以在Pyhon 3.X上运行的Python框架是瓶,但它只在WSGI上运行,因此依赖于Apache/mod_WSGI。我同意Graham和这里的许多其他评论者的观点:1.如果你使用Python 3,你是早期采用者。2.CherryPy I这是一个很好的解决方案。3.人们不应该为web应用编写非框架Python。只有框架应该完全处于WSGI级别。@Adam:1)两年。如果这是如此早期的采用者,以至于Python社区真的认为“还不能进行web开发”是合理的,那么Python 3将注定失败。2)CherryPy是一个解决问题的方案,我没有,也不会,如果websig在两年后成功地将WSGI标准化为Py3k的话。3)我的应用程序从第三方框架中得不到任何好处,除了补偿未能获得WSGI 1.1之外。4)告诉我写一个“微框架”“对于一个不存在的标准来说是没有帮助的,它只是强化了我的观点,即瞄准FastCGI是唯一明智的选择@亚当:。。。5) 如果我是一个框架开发者呢?那么你的答案是什么?不要编写新的框架?同样,这将是一个未被问到的问题的解决方案。6) 你和格雷厄姆都错过了这个问题的关键点:今天人们在生产中使用什么。我还没有从任何人那里得到答案。导致“自己动手”或“忽略Python3作为无关内容”。后者会很愚蠢,前者只会花费多一点时间。