{ "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 :: 2.4", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Internet :: WWW/HTTP :: WSGI :: Server" ], "description": "Fast Asynchronous Python Web Server (Fapws in short)\n====================================================\n\nThis is a python web server using the wonderfull [libev](http://software.schmorp.de/pkg/libev.html) library. Thus this is yet an another asynchronous web server like Medusa, Twisted, Apricot.\nAnd Fapws is WSGI compliant.\n\nA bit history of Fapws3 \n------------------------\nFapws1, Fapws2 and Fapws3 are \"internal\" project's name. The rename correspond to a full re-write. \n\nIn the begining I made Fapws1, a Python extension based on the Apricot code. Then, quickly comes the need to have much more features in it, and I've called it Fapws2. Fapws1 has never been publically published.\nFapws2 is rebuild based on the http library of libevent. Works great, but I've been forced to modify the evhttp_handle_request of libevent. Despite several mails to the libevent mailing list, no one was agreed to accept my patch. Thus, this is was a bit complicated to use. \nAt a moment, Marc Lehmann posts, in the libevent mailinglist, a mail describing the creation of a \"new\" and optimized event's library similar to libevent: libev. Because the code was much more clean (personnal point of view) and because the [documentation provided](http://cvs.schmorp.de/libev/ev.pod) was very clear, I've decided to give it a try. Thus, in December 2008, came Fapws3; a full re-write of Fapws2, but based on libev. \n\nSupport for Fapws2 will be strictly limited to bug fixing. My current work will be focused on Fapws3. \n\n\nWhy a new python web server ?\n-----------------------------\nIn that case, the usual question is why an new one ? In short, the answer is because it sounds that Apricot is not more maintained, and because Medusa and Twisted can not go as fast as Apricot. Indeed, after several pure performance tests it appears that, thanks to a library like libevent or libev the webserver build on top of it is really fast.\n\nBut that's not the only reason. Personnally, I prefer event's web server. Indeed, such architecture gives more performant web server and with a much more limited memory foot print. You can easly install them into a memory limited machines (like VDS for example).\n\nPhilosophy:\n-----------\nFapws must stay the most simple web server and the fastest. Thus the core of the application is quite limited. Every contributions will be placed inside a \"contrib\" sub-directory. If disk space is so important for you, you can easily remove this contrib sub-directory. \nMoreover, I will not implement in Fapws what other application can do. Thus for eample, proxying, load balancing, SSL will not be implemented. Tools like [pound](http://www.apsis.ch/pound/) do that very well.\n\nHow to install Fapws:\n---------------------\nPlease read the INSTALL document provided. \n\nHow to use Fapws ?\n------------------\nUsing Fapws is quite simple and must be done in 4 major steps:\n\n1. You define the main parameters of your webserve with the method \"start\" and the method \"base\". Unless you really know what you \n are doing, I strongly suggest to use the \"base\" module provided within the package.\n2. You define your WSGI python callbacks. \n3. You link the URL path with the python callbacks previously created. \n4. You start you webserver by triggering the \"run\" method. \n5. As describbed in the Libev documentation, you can controle the Event Loop used. By default Libev estimate what's the best one \n for your architecture, but you can overwrite this selection by using the environment variable: LIBEV_FLAGS.\n\nChoices are: 1=select, 2=poll (everywhere except windows), 4=epoll (Linux), 8=kqueue (BSD clones), 16=devpoll (solaris 8), 32=port (solaris 10)\n\nFor you help, check the samples.\n\nHow to got news about Fapws ?\n-----------------------------\nYou will find information concerning Fapws on [my own blog](http://william-os4y.livejournal.com/) \nYou can also join us in the [Fapws mailing list](http://groups.google.com/group/fapws) (because of spams, registration is required). \nAnd since 2010 you have the [Fapws website](http://www.fapws.org/) \n\nWhere it can run ?\n------------------\nTheoritically anywhere where both Python (2.6 or above) and Libev are running. \n\nIt has been reported as running fine on: Freebsd, OpenBSD, NetBsd, Debian (and ubuntu), Gentoo, Archlinux, Fedora.\n\nBut note that it will not run on 64bit machines using python 2.4 or lower. \nAnd it has not yet been ported to python 3.x\n\nContribution\n-------------\nPeople interested to contribute to the development of Fapws3 can contact me on william _dot_ os4y -at- gmail.com\n\n\nThe following people sent in patches or made other noteworthy\ncontributions.\n\nIf I forgot to include you, please shout at me, (it was an accident): \n\njerzyk : https://github.com/william-os4y/fapws3/pull/17\n\nshigin : https://github.com/william-os4y/fapws3/pull/19\n\nshigin : https://github.com/william-os4y/fapws3/pull/21\n\nAleksey : did extra tests on python 2.4 and python 2.5\n\nLiu Qishuai : Code improvement\n\nStiletto : implementation of tuple\n\nKeith : Implementation of sockets\n\nWilliam Dignazio : setup.py improvement https://github.com/william-os4y/fapws3/pull/35\n\nYangshe1990 : wrong remote_addr https://github.com/william-os4y/fapws3/pull/34\n\n\n\n\nLicense\n-------\n\n Copyright (C) 2009 William.os4y@gmail.com\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, version 2 of the License.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n\n\n\nHave fun with Fapws3. \n\nWilliam", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.fapws.org", "keywords": "", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "fapws3", "package_url": "https://pypi.org/project/fapws3/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/fapws3/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://www.fapws.org" }, "release_url": "https://pypi.org/project/fapws3/0.11.dev/", "requires_dist": null, "requires_python": null, "summary": "Fast Asynchronous Python Web Server", "version": "0.11.dev" }, "last_serial": 791890, "releases": { "0.10.dev": [ { "comment_text": "", "digests": { "md5": "0c70d13322c16abb2afa9c5c69b21bc4", "sha256": "92fa35787c1552eab7ce2d1ff115424e8464584870f3bee0b86eefa6a88874f2" }, "downloads": -1, "filename": "fapws3-0.10.dev.tar.gz", "has_sig": false, "md5_digest": "0c70d13322c16abb2afa9c5c69b21bc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37519, "upload_time": "2012-02-12T12:16:23", "url": "https://files.pythonhosted.org/packages/1d/9a/3475bad479b3c8fddbb178ed4de9d21700885432d80a71339248adf84a71/fapws3-0.10.dev.tar.gz" } ], "0.11.dev": [ { "comment_text": "", "digests": { "md5": "a85f9e02586d1bb71585614893c0a799", "sha256": "486214c80b75a77d58c460cfabb5cdb933e2daf29360eb966c9dde085cf21744" }, "downloads": -1, "filename": "fapws3-0.11.dev.tar.gz", "has_sig": false, "md5_digest": "a85f9e02586d1bb71585614893c0a799", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37461, "upload_time": "2012-04-14T12:35:30", "url": "https://files.pythonhosted.org/packages/7a/10/16c43945b2dde4f6b7ca6796a5aad3ab2119d2651160e9cf4ee7378e6ef1/fapws3-0.11.dev.tar.gz" } ], "0.4.dev": [ { "comment_text": "", "digests": { "md5": "c3c235bb17907bcbc7f4e0099c6f0acf", "sha256": "6fadfc26fac5afac4f5c96ea824c7f3f37a188f8178bd95316780fb029518423" }, "downloads": -1, "filename": "fapws3-0.4.dev.tar.gz", "has_sig": false, "md5_digest": "c3c235bb17907bcbc7f4e0099c6f0acf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26612, "upload_time": "2010-02-23T23:42:59", "url": "https://files.pythonhosted.org/packages/d8/2f/75d21f99b2a4d82137472bb10cef4eae09a2cd1568b4e07b13af22a65e5f/fapws3-0.4.dev.tar.gz" } ], "0.5.dev": [ { "comment_text": "", "digests": { "md5": "209588ff8623345d1a89295d821933d0", "sha256": "d8306d434bab0fa46faeca85966243485e0140c7e8c5265723771d4a32cacf8f" }, "downloads": -1, "filename": "fapws3-0.5.dev.tar.gz", "has_sig": false, "md5_digest": "209588ff8623345d1a89295d821933d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27017, "upload_time": "2010-05-25T18:01:27", "url": "https://files.pythonhosted.org/packages/87/33/ffb9a499f196c85a363d0ddd83d9441a6521e765d20b9ba3f782892a3dc2/fapws3-0.5.dev.tar.gz" } ], "0.6.dev": [ { "comment_text": "", "digests": { "md5": "5e2acfa044a3f23ff530931e4e4c002b", "sha256": "8b3621a04953235821c89f2625c7c0cf7c51451c91545bff2259519dd19673ef" }, "downloads": -1, "filename": "fapws3-0.6.dev.tar.gz", "has_sig": false, "md5_digest": "5e2acfa044a3f23ff530931e4e4c002b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27579, "upload_time": "2010-07-27T10:12:49", "url": "https://files.pythonhosted.org/packages/5a/12/243e129fed5ffb3d32c148790cea31925dbe734150c415aba1df65ca3dbe/fapws3-0.6.dev.tar.gz" } ], "0.8.1.dev": [ { "comment_text": "", "digests": { "md5": "03ddbe6c17b0e41d1e7b02385155d2be", "sha256": "f2c7bbfebe031460c36c8e25ff81f8dc36f7706b947b4e35755dec5641fdc570" }, "downloads": -1, "filename": "fapws3-0.8.1.dev.tar.gz", "has_sig": false, "md5_digest": "03ddbe6c17b0e41d1e7b02385155d2be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31357, "upload_time": "2010-11-20T17:34:09", "url": "https://files.pythonhosted.org/packages/4d/19/676c387dab3043d55a0b7457c85b6300b8f345316f9ab2db5ac98f1580de/fapws3-0.8.1.dev.tar.gz" } ], "0.8.dev": [ { "comment_text": "", "digests": { "md5": "b2ffbe08d974c6ebec7d6590263b549c", "sha256": "ec714245cabdbc05fe01c587695559b09e6079313ef570469a923d6c2604846e" }, "downloads": -1, "filename": "fapws3-0.8.dev.tar.gz", "has_sig": false, "md5_digest": "b2ffbe08d974c6ebec7d6590263b549c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30305, "upload_time": "2010-09-25T22:07:33", "url": "https://files.pythonhosted.org/packages/a2/82/a068ca9a1850cd3a5d417fa0955f11b789682b1042bc05a37fe6e9dd0549/fapws3-0.8.dev.tar.gz" } ], "0.9.dev": [ { "comment_text": "", "digests": { "md5": "318c471687f9c9e3556abfbe0046dbdb", "sha256": "c247a4d4d4a5b61cfbfe73d5560dfaacd6a469e76db5f65005680d1d72d9229e" }, "downloads": -1, "filename": "fapws3-0.9.dev.tar.gz", "has_sig": false, "md5_digest": "318c471687f9c9e3556abfbe0046dbdb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37712, "upload_time": "2011-01-16T16:43:37", "url": "https://files.pythonhosted.org/packages/49/e0/d5bbb74b5e0cc6e791bc91b2337f83dd0b44b4b0e6e316dc9ddd48a65dca/fapws3-0.9.dev.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a85f9e02586d1bb71585614893c0a799", "sha256": "486214c80b75a77d58c460cfabb5cdb933e2daf29360eb966c9dde085cf21744" }, "downloads": -1, "filename": "fapws3-0.11.dev.tar.gz", "has_sig": false, "md5_digest": "a85f9e02586d1bb71585614893c0a799", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37461, "upload_time": "2012-04-14T12:35:30", "url": "https://files.pythonhosted.org/packages/7a/10/16c43945b2dde4f6b7ca6796a5aad3ab2119d2651160e9cf4ee7378e6ef1/fapws3-0.11.dev.tar.gz" } ] }