{ "info": { "author": "William", "author_email": "william.os4y@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: C", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Internet :: WWW/HTTP :: WSGI :: Server" ], "description": "=====================================================\nFast Asynchronous Python Web Server (Fapws for short)\n=====================================================\n\n.. contents:: **Table of Contents**\n\nThis README file was originally written by William, the author of\nfapws3, and modified by Wu Zhe, the maintainer of nfapws python\npackage to detail some installing instructions.\n\nIntroduction\n============\n\nThis is a python web server using the wonderfull libev\n\n::\n\n http://software.schmorp.de/pkg/libev.html\n\nlibrary. Thus this is yet an another asynchronous web server like\nMedusa, Twisted, Apricot. And Fapws is a WSGI compliant web server.\n\nWhat are Fapws2 and Fapws3 about ?\n----------------------------------\n\nFapws1, Fapws2 and Fapws3 are \"internal\" project's name. The rename\ncorrespond to a full re-write.\n\nIn the begining I made Fapws1, a Python extension based on the Apricot\ncode. Then, quickly comes the need to have much more features in it,\nand I've called it Fapws2. Fapws1 has never been published. Fapws2 is\nrebuild based on the http library of libevent. Works great, but I've\nbeen forced to modify the evhttp_handle_request. Despite seevral mails\nto the libevent mailing list, no one was agreed to accept my patch to\nthe http code of libevent. Thus, or use use it with libevent <1.3e or\nyou must change the code of libevent before using it for Fapws. This\nis not a so good way of working ;-(. Than comes Fapws3, a rebuild of\nFapws2 without dependencies to http's API of libevent. At that moment\nMarc Lehmann posts, in the libevent mailinglist, a mail describing the\ncreation of a \"new\" and optimized event's library similar to libevent.\nBecause the code was much more clean to me and because the\ndocumentation provided\n\n::\n\n http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod\n\nwas very clear, I've decided to give it a try.\n\nSupport for Fapws2 will be strictly limited to bug fixing. My current\nwork will be focused on Fapws3.\n\nWhy a new python web server ?\n-----------------------------\n\nIn that case, the usual question is why an new one ? In short, the\nanswer is because it sounds that Apricot is not more maintained, and\nbecause Medusa and Twisted can not go as fast as Apricot. Indeed,\nafter several pure performance tests it appears that, thanks to the\nlibevent library used in Apricot, is the fastest python web server.\n\nBut that not the only reason. Personnally, I prefer event's web\nserver. Indeed, such architecture gives more performant web server and\nwith a much more limited memory foot print. You can easly install them\na memory limited machines (like VDS for example).\n\nPhilosophy:\n-----------\n\nFapws must stay the most simple web server and the fastest. Thus the\ncore of the application is quite limited. Every additional feature\nwill be placed inside a \"contrib\" sub-directory. This is valontary for\ndisk space \"foot print\" reasons. Thus Fapws must also facilitate the\ndisk utilisation.\n\nHow to install fapws?\n=====================\n\nPre-requisit:\n-------------\n\n* Python with header files, version >= 2.4, (in Debian, ``sudo aptitude\n install python python-dev``)\n\n* Libev with header files, version >= 3.49 (in Debian, ``sudo aptitude\n install libev3 libev-dev``)\n\nWARNING:\n\nTo avoid conflicts with the previous version (called Fapws2), better\nto remove it before installation of the new one.\n\nInstall fapws:\n--------------\n\n``sudo easy_install nfapws``\n\n\nHow to use Fapws ?\n==================\n\nUsing Fapws is quite simple and can be done in 4 major steps:\n\n1. You define the main parameters of your webserve with the method\n \"start\" and the method \"base\". Unless you really know what you are\n doing, I strongly suggest to use the \"base\" module provided within\n the package.\n\n2. You define you WSGI python callbacks.\n\n3. You link the URL patht he the python callbacks previously created.\n\n4. You start you webserver by triggering the \"run\" method.\n\n5. As describbed in the Libev documentation, you can controle the\n Event Loop used. By default Libev estimate what's the best one for\n your architecture, but you can overwrite this selection by using\n the environment variable: LIBEV_FLAGS. Choices are: 1=select,\n 2=poll (everywhere except windows), 4=epoll (Linux), 8=kqueue (BSD\n clones), 16=devpoll (solaris 8), 32=port (solaris 10)\n\nFor more help, check the samples.\n\nHow to get news about Fapws?\n============================\n\nYou will find information concerning Fapws on my own blog:\nhttp://william-os4y.livejournal.com/\n\nWhere it can run?\n==================\n\nTheoritically anywhere where both Python and Libev are running.\n\n\nHave fun with Fapws.\n\nWilliam", "description_content_type": null, "docs_url": null, "download_url": "http://pypi.python.org/pypi/nfapws", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://william-os4y.livejournal.com/", "keywords": "", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "nfapws", "package_url": "https://pypi.org/project/nfapws/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/nfapws/", "project_urls": { "Download": "http://pypi.python.org/pypi/nfapws", "Homepage": "http://william-os4y.livejournal.com/" }, "release_url": "https://pypi.org/project/nfapws/0.3.2/", "requires_dist": null, "requires_python": null, "summary": "Fast Asynchronous Python Web Server", "version": "0.3.2" }, "last_serial": 795345, "releases": { "0.3.2": [ { "comment_text": "built on Linux-2.6.30-1-686-i686-with-glibc2.3", "digests": { "md5": "e578182503f9285442ff5f4622e481c0", "sha256": "d5ef426d6aa50db4ed0302204ec8d274530fc3b364e77cc2e5e6c24cb6db5407" }, "downloads": -1, "filename": "nfapws-0.3.2-py2.5-linux-i686.egg", "has_sig": false, "md5_digest": "e578182503f9285442ff5f4622e481c0", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 56413, "upload_time": "2009-08-21T08:21:34", "url": "https://files.pythonhosted.org/packages/1f/20/d05f80848a8780d850e8223ba4a97f77fffa6a23c0666e6ae06fb3785fa7/nfapws-0.3.2-py2.5-linux-i686.egg" }, { "comment_text": "", "digests": { "md5": "315e5bb65170561c947d0a41d75979d6", "sha256": "3c138d1244b2e185aad4ebaa48593281ddeb4c0d386ea93a82763f65a4579e1d" }, "downloads": -1, "filename": "nfapws-0.3.2.tar.gz", "has_sig": false, "md5_digest": "315e5bb65170561c947d0a41d75979d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27360, "upload_time": "2009-08-21T08:21:31", "url": "https://files.pythonhosted.org/packages/37/fc/9c681dbad0eb3758330cd7630750501a63065c8256c28894792b6e4446d6/nfapws-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "built on Linux-2.6.30-1-686-i686-with-glibc2.3", "digests": { "md5": "e578182503f9285442ff5f4622e481c0", "sha256": "d5ef426d6aa50db4ed0302204ec8d274530fc3b364e77cc2e5e6c24cb6db5407" }, "downloads": -1, "filename": "nfapws-0.3.2-py2.5-linux-i686.egg", "has_sig": false, "md5_digest": "e578182503f9285442ff5f4622e481c0", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 56413, "upload_time": "2009-08-21T08:21:34", "url": "https://files.pythonhosted.org/packages/1f/20/d05f80848a8780d850e8223ba4a97f77fffa6a23c0666e6ae06fb3785fa7/nfapws-0.3.2-py2.5-linux-i686.egg" }, { "comment_text": "", "digests": { "md5": "315e5bb65170561c947d0a41d75979d6", "sha256": "3c138d1244b2e185aad4ebaa48593281ddeb4c0d386ea93a82763f65a4579e1d" }, "downloads": -1, "filename": "nfapws-0.3.2.tar.gz", "has_sig": false, "md5_digest": "315e5bb65170561c947d0a41d75979d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27360, "upload_time": "2009-08-21T08:21:31", "url": "https://files.pythonhosted.org/packages/37/fc/9c681dbad0eb3758330cd7630750501a63065c8256c28894792b6e4446d6/nfapws-0.3.2.tar.gz" } ] }