Python 3中的FastCGI WSGI库是什么?

16

有没有任何库可以将WSGI应用程序作为FastCGI服务器提供,适用于Python 3?(这样nginx就可以代理请求了吗?)

Python 3文档提到flup,但flup甚至无法在Python 3中安装:

% env3/bin/pip install flup
正在下载/安装 flup
  正在下载 flup-1.0.2.tar.gz (49kB): 已下载 49kB
  运行 setup.py (路径:/Users/me/tmp/env3/build/flup/setup.py) egg_info for package flup
    Traceback (most recent call last):
      File "", line 17, in 
      File "/Users/me/tmp/env3/build/flup/setup.py", line 2, in 
        from ez_setup import use_setuptools
      File "./ez_setup.py", line 98
        except pkg_resources.VersionConflict, e:
                                            ^
    SyntaxError: invalid syntax
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
File "", line 17, in
File "/Users/me/tmp/env3/build/flup/setup.py", line 2, in
from ez_setup import use_setuptools
File "./ez_setup.py", line 98
except pkg_resources.VersionConflict, e:
^
SyntaxError: invalid syntax
---------------------------------------- 清理... 命令 python setup.py egg_info 失败,错误代码为 1,[snip] 中存储了失败的调试日志。

一个非常快速的谷歌搜索在前六个结果中显示了这个。https://github.com/Pyha/flup-py3.3 - Graham Dumpleton
1
找到了另一个。看起来原作者Allan Saddi对此做出了重大贡献:http://hg.saddi.com/flup-py3.0/ - Nayuki
2
@Nayuki,确实,flup-py3存在一个未解决的问题,该问题已经悬而未决了几年。在flipflop中,Allan Saddi的杰出工作被进一步简化了。 - Serge Stroobandt
5个回答

9
现在有一个名为flup6的模块。使用pip安装它即可。
./pip install flup6

类型错误:序列项0:期望字节、bytearray或具有缓冲区接口的对象,但发现str。在Django 1.8 Python 3.4中不起作用。 - eri
1
看起来 flup6 是 Python 3 的唯一可用的 flup 替代品。在 Python 3.5 上尝试了 flup-py3flipflop 都不行。 - quasiyoke
@quasiyoke flipflop 在 Windows 中无法工作,因为 'fcntl' 无法在 Windows 中工作。 - Kingname

7
你可以使用 flipflop。它是 flup 的简化版本(只包含 FastCGI 部分),并且可以很好地与 Python 3 兼容。

在谷歌上发现了这个,正是我正在寻找的。文档很少,但维基百科上的示例已经足够了:http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface#Example_application - HoboBen
对于Django,hostmonster.com上的fcgi要求flup,而pip无法安装它。 - SaidbakR

2
您可以使用flup-py3来解决这个问题,步骤如下:

pip3 install flup-py3

您可能需要超级用户权限来执行此命令。

0

0

我知道有两个选项

两者都支持Python 3,并且都可以基于其他Web应用程序代码创建WSGI工作进程,并可提供给NGINX。

正如Graham Dumpleton所提到的,CherryPy通过HTTP协议与NGINX通信,而uWSGI则使用“uwsgi”协议而不是HTTP协议与nginx通信,尽管它也支持使用HTTP。在应用程序方面,两者都支持通过WSGI API托管Python Web应用程序。


CherryPy依赖于HTTP代理。对于nginx而言,uWSGI是更好的选择,因为最近的nginx版本已经内置了对uWSGI自定义协议的支持。 - Graham Dumpleton
@GrahamDumpleton 很好的观点,我已经审查了一些描述,从您的评论中学到了东西,并更新了我的答案。希望我正确理解了您的评论和链接描述。 - Jan Vlcinsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接