快速异步python web服务器

nfapws的Python项目详细描述


这个自述文件最初是由 fapws3,由nfapws python的维护者吴哲修改 包以详细说明一些安装说明。

Introduction

这是一个使用wonderfull libev的python web服务器

http://software.schmorp.de/pkg/libev.html

图书馆。因此,这是另一个类似于 水母,扭曲,杏子。fapws是一个符合wsgi的web服务器。

What are Fapws2 and Fapws3 about ?

fapws1、fapws2和fapws3是“内部”项目的名称。重命名 与完全重写相对应。

一开始我做了fapws1,一个基于apricot的python扩展 代码。然后,很快就需要有更多的功能, 我叫它fapws2。FAPWS1从未出版过。FAPWS2是 基于libevent的http库重建。很好,但是我 已被强制修改evhttp_handle_请求。尽管有很多邮件 在libevent邮件列表中,没有人同意接受我的修补程序 libevent的http代码。因此,或与libevent<;1.3e或 在将libevent用于fapws之前,必须更改它的代码。这个 不是很好的工作方式;-(。比fapws3更重要的是 fapws2不依赖于http的libevent api。在那一刻 marc lehmann在libevent邮件列表中发布了一封描述 创建类似libevent的“新”优化事件库。 因为代码对我来说更干净, 提供的文档

http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod

很清楚,我决定试一试。

对FAPWS2的支持将严格限于bug修复。我的当前 工作重点将放在FAPWS3上。

Why a new python web server ?

在这种情况下,通常的问题是为什么要换一个新的?简而言之, 答案是因为听起来杏子没有得到更多的维护,而且 因为水母和麻花不能像杏子那样快。的确, 经过几次纯性能测试后,由于 libevent库用于apricot,是最快的python web服务器。

但这并不是唯一的原因。个人而言,我更喜欢活动网站 服务器。实际上,这样的架构提供了更高性能的web服务器和 更有限的记忆足迹。你可以很容易地安装它们 内存有限的机器(例如VDS)。

Philosophy:

fapws必须保持最简单和最快的web服务器。因此 应用程序的核心非常有限。每个附加功能 将放在“contrib”子目录中。这是瓦伦塔里 磁盘空间“脚印”的原因。因此,FAPWS还必须促进 磁盘利用率。

How to install fapws?

Pre-requisit:

  • 带有头文件的python,版本>;=2.4,(在debian中,sudo aptitude install python python-dev
  • 带有头文件的libev,版本>;=3.49(在debian中,sudo aptitude install libev3 libev-dev

警告:

为了避免与以前的版本(称为fapws2)发生冲突,最好 在安装新的之前将其移除。

Install fapws:

sudo easy_install nfapws

How to use Fapws ?

使用fapws非常简单,可以通过4个主要步骤来完成:

  1. 使用方法定义webserve的主要参数 “开始”和“基础”方法。除非你真的知道你是什么 我强烈建议使用 包裹。
  2. 定义wsgi python回调。
  3. 链接先前创建的python回调的url路径。
  4. 通过触发“run”方法启动web服务器。
  5. 如libev文档中所述,您可以控制 使用了事件循环。默认情况下,Libev Esti最适合做什么 您的体系结构,但可以使用 环境变量:libev_flags。选择是:1=选择, 2=轮询(除Windows以外的所有位置),4=epoll(Linux),8=kqueue(BSD 克隆),16=devpoll(solaris 8),32=端口(solaris 10)

要获得更多帮助,请检查示例。

How to get news about Fapws?

你可以在我自己的博客上找到关于fapws的信息: http://william-os4y.livejournal.com/

Where it can run?

理论上讲,在python和libev都运行的任何地方。

玩得开心。

威廉

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从Java中的方法返回列表时遇到问题   java如何忽略json字段,并使用Jackson ObjectMapper获取其值以进行映射   spring通过更新其各自java对象的值来映射两个xsd文件   java从HttpClient获取500错误,在浏览器中工作   java使用物理键输入(耳机中的按钮)在安卓中执行一些操作   如何在int数组(java)中追加int?   java Spring RequestParam的默认值等于方法调用   java将JsonLayout添加到log4j2 json配置   Ubuntu上的maven Tomcat6 libs和/usr/share/java   java单元测试Android活动   java获取URL证书的屏幕截图   java如何为自定义类加载器加载的类提供工具?   FB墙上的java错误图片,来自安卓应用程序的反馈帖子(安卓 FB sdk)   从Intellij IDEA内部运行Tomcat时的java差异?   java TDD与不可能的例外   安卓 Java日期表示差异