{ "info": { "author": "Da_Blitz", "author_email": "code@pocketnix.org", "bugtrack_url": null, "classifiers": [], "description": "Archangel\n=========\nArchangel is a webserver designed to be fast and easy to use for personal \nusage. It was created to replace an internal webserver based off of flup for \nfcgi and wsgiref for http serving (basically anything would be an improvement) as \nwell as explore the new pep-3156_/Tulip_ based library by Guido van Rossum\n\nArchangel is designed to be 'fast'. This does not mean however that archangel \nis fast, Archangel is instead intended to explore how fast a server using an \nevent loop based of tulip can be made to go and what is needed to get it there.\n\nAs an additional side effect it should serve as a light house in the fog as to \nwhat you should or should not do with Tulip_ (Of course it is still yet to be \ndetermine on which side of the divide Archangel ends up)\n\nTenets:\n--------\nOnly do things when we need to:\n Do things \"Just in Time\"\nOnly do things we have to:\n Be lazy\nDo it quickly:\n Go back to sleep as fast as possible\n\nWhat Archangel provides\n------------------------\n* Pre-forking Webserver\n* WSGI connector\n* The ability to run multiple dissimilar WSGI apps in the same process and \n route requests to them individually based off of PATH_INFO or HOST headers\n\nWhat Archangel does not provide\n--------------------------------\n* 'Cron' like functionality, this is now implemented via Tulip_. get a copy of \n the mainloop with ``loop = tulip.get_event_loop()``, then attach your cron \n function with ``loop.call_repeatably(15.0, my_cron)`` which will call your \n ``my_cron`` function every 15 seconds\n* Unix Signal support, this functionality is already provided by Tulip_ via the \n ``add_signal_handler`` functionality\n* Long running background tasks. Tulip_ can be used to launch background \n contexts via ``call_soon``. note that CPU bound tasks should ``yield`` \n periodically to prevent blocking of other tasks or use ``run_in_executor`` \n provided by the main loop.\n\nPossible Future Features\n-------------------------\n* Internal 'signalling' allowing applications to signal each other and respond \n accordingly\n\nCompatibility Notes\n--------------------\n* For performance, any 3rd party library you use will need to be \n tulip_/pep-3156_ compatible and return a future on blocking calls so that it \n may be ``yield from``'d. libraries using open() and socket.socket or other \n blocking calls will still work without issue but will prevent other requests \n from being handled while the system call is blocked\n* To use traditional style locks and events, use the implementations in tulip_ \n rather than the ``threading`` library\n\nTWIG: Tulipe Webservices Gateway Interface\n------------------------------------------\nArchangel provides a test-bed for developing a new protocol loosely based \noff of pep-3333_/WSGI, Designed for use with Tulip_ and providing a more \n'stream' like interface. This can be used to implement long polling clients as \nwell as support traditional WSGI like request/response through the use of \nmiddleware that will be bundled with Archangel.\n\nAn inital draft of the TWIG spec can be found here__\n\n__ http://code.pocketnix.org/archangel/file/tip/TWIG\n\nRequirements\n------------\n* Python 3.3 or greater\n* Distutils2 (to replace setup.py, a fallback is provided)\n* A copy of the Tulip_ library\n* PyYaml for parsing the config files\n\nGetting the Latest version\n---------------------------\nThe latest version of Archangel can be obtained with mercurial/hg using the \nfollowing command:\n\n hg clone http://code.pocketnix.org/archangel\n\nLinks\n-----\n* `Design Notes`_\n\n.. _pep-3333: http://www.python.org/dev/peps/pep-3333/\n.. _pep-3156: http://www.python.org/dev/peps/pep-3156/\n.. _Tulip: https://code.google.com/p/tulip/\n.. _Design Notes: http://www.pocketnix.org/posts/Archangel%20Design%20Notes%3A%20Part%201\n\nChange Log\n-----------\n\n0.3\n++++\n* Added twig module\n* Added Request object\n* Added Response object\n* Expand on TWIG PEP\n\n0.2.1\n++++++\n* Minor bump to update filenames (WSGI-STREAM => TWIG)\n\n0.2: Fresh Breeze\n++++++++++++++++++\n* Split code into modules\n* Name changes to WSGIProtocol and friends, now split along 'FCGI' and\n 'HTTP' lines\n* Framework can make requests with to a special function using a\n 'looks like wsgi if you squint hard enough' protocol\n \n0.1.2\n++++++\n* Added WSGI-STREAM spec\n* Refined documentation and links\n* Added Changelog\n\n0.1.1\n++++++\n* Inital code\n* README file", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://code.pocketnix.org/archangel/file/", "keywords": "tulip\npep-3156\n3156\nwebserver\neventloop\nwsgi\ntwig", "license": "ISC", "maintainer": null, "maintainer_email": null, "name": "archangel", "package_url": "https://pypi.org/project/archangel/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/archangel/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://code.pocketnix.org/archangel/file/" }, "release_url": "https://pypi.org/project/archangel/0.3/", "requires_dist": null, "requires_python": null, "summary": "An experimental webserver based off tulip (pep-3156)", "version": "0.3" }, "last_serial": 786377, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "13331a03636729ace1e7cfabdc38773e", "sha256": "2a492441f1a7d2295fd38740e11dde5da2fa00e4f47463e280ec5735d762dbee" }, "downloads": -1, "filename": "archangel-0.1.tar.gz", "has_sig": false, "md5_digest": "13331a03636729ace1e7cfabdc38773e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5535, "upload_time": "2013-04-11T14:41:28", "url": "https://files.pythonhosted.org/packages/3c/d3/e93b71b4294ad48f20f257e90915b6ec747bbbc2190061a830543efe252c/archangel-0.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "57c08e5089f52828ff8e691866d836f3", "sha256": "8d9bbd623bdb71d1a890ee1a95fc691a340386ec37a13b0b8f09d8ab4759e88c" }, "downloads": -1, "filename": "archangel-0.1.zip", "has_sig": false, "md5_digest": "57c08e5089f52828ff8e691866d836f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9564, "upload_time": "2013-04-11T14:41:24", "url": "https://files.pythonhosted.org/packages/d1/c0/5211a49ebfd2021f04f16e44614567ca23396accd035ca812489afa9837c/archangel-0.1.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "fe64d957394665adcfd3d648d2012782", "sha256": "dfb1b0397ac27cc6e805204db936da0f223a1e51b1aa42094ea8a311682874d2" }, "downloads": -1, "filename": "archangel-0.1.1.tar.gz", "has_sig": false, "md5_digest": "fe64d957394665adcfd3d648d2012782", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5856, "upload_time": "2013-04-11T17:01:10", "url": "https://files.pythonhosted.org/packages/6d/4e/74c2447fdbd687a1feb3d1a384b4e2b88a750719eaf2e694243cabc12911/archangel-0.1.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "f9d93cc483aeff657970123f0ee16f7b", "sha256": "f159368f1fe7a47d6891750fac54b9a31176934593b96c810cf7b730d7efcf22" }, "downloads": -1, "filename": "archangel-0.1.1.zip", "has_sig": false, "md5_digest": "f9d93cc483aeff657970123f0ee16f7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10187, "upload_time": "2013-04-11T17:01:07", "url": "https://files.pythonhosted.org/packages/d2/68/7e98ebf47ae989fd4d558b6b4dbbda4520ba5c173d0ce88bd7cd1bb34011/archangel-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "cb68d5475f384db8204795d7e5f788c3", "sha256": "5fb9aaf4a4e61e7eeec0279408dc4c551e64dc42eda67e1904162968f9222bd8" }, "downloads": -1, "filename": "archangel-0.1.2.tar.gz", "has_sig": false, "md5_digest": "cb68d5475f384db8204795d7e5f788c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6606, "upload_time": "2013-04-12T13:25:33", "url": "https://files.pythonhosted.org/packages/00/5d/38b03e2bfc2adda33f6ec33a37a6abf62f17a2860be4e0c0fe5a5f5dc1b7/archangel-0.1.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "c07330a7a78dfa7f09b8391c2e5834db", "sha256": "2ef5156a4e197a92e38f8ae6e5aae21a70ce19c7333dc842b6232742426d84e2" }, "downloads": -1, "filename": "archangel-0.1.2.zip", "has_sig": false, "md5_digest": "c07330a7a78dfa7f09b8391c2e5834db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11453, "upload_time": "2013-04-12T13:25:30", "url": "https://files.pythonhosted.org/packages/c4/05/640d36560764c300fe1dc85ab4382c7ee6aaff28043ea2ac1147ea621fa6/archangel-0.1.2.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "7734970a6585efa4bd52ef4137271e9d", "sha256": "18bf2c2abb9e7ca7327ec47e7456975814ac723e5821ea1b46d4368c3fb018a8" }, "downloads": -1, "filename": "archangel-0.2.tar.gz", "has_sig": false, "md5_digest": "7734970a6585efa4bd52ef4137271e9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7931, "upload_time": "2013-04-14T14:32:44", "url": "https://files.pythonhosted.org/packages/c7/e6/685657f803c5cf3d270183dd7437864b8ceda6dbe90b7d77b901b26f8203/archangel-0.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "c1bb52b490f438b0a3d374d6dd8e31e5", "sha256": "0c81c2394bf381f06904db4dec904dab5d60ea9a419ba602749d122e56755fde" }, "downloads": -1, "filename": "archangel-0.2.zip", "has_sig": false, "md5_digest": "c1bb52b490f438b0a3d374d6dd8e31e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12193, "upload_time": "2013-04-14T14:32:42", "url": "https://files.pythonhosted.org/packages/29/55/ce5bf974e0d46f7041b8f761b566ab9da05ae18fd31ea6f694aba94b3cd5/archangel-0.2.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "4f972bd8cbc4badcd07379f4746205b1", "sha256": "4825513cd989ce5348e9568ea7b09ded338c161822d30aa183047882dbd391e4" }, "downloads": -1, "filename": "archangel-0.2.1.tar.gz", "has_sig": false, "md5_digest": "4f972bd8cbc4badcd07379f4746205b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8059, "upload_time": "2013-04-20T07:32:57", "url": "https://files.pythonhosted.org/packages/fc/bd/7505b2212021549daa0044b9d9161b1501d8ce50fe86b5e504819357fc0d/archangel-0.2.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "d6a14b05aa43f9952569081ac8b32048", "sha256": "4d31584e730061ac79e121911031a7cf0b93d6e7d06dccd68171f7488f475d3e" }, "downloads": -1, "filename": "archangel-0.2.1.zip", "has_sig": false, "md5_digest": "d6a14b05aa43f9952569081ac8b32048", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15515, "upload_time": "2013-04-27T14:38:46", "url": "https://files.pythonhosted.org/packages/f8/18/b6e9f29bde73771078d37493cf4ea897f494b347936dfb884c78cdbd7bba/archangel-0.2.1.zip" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "0bff4194c365b1595d7a906a5e038a2b", "sha256": "6412e9b4a40c74b52037ba54495861c72638c59aeb7348e8392a6cfe4ed2e807" }, "downloads": -1, "filename": "archangel-0.3.tar.gz", "has_sig": false, "md5_digest": "0bff4194c365b1595d7a906a5e038a2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10574, "upload_time": "2013-04-27T14:39:16", "url": "https://files.pythonhosted.org/packages/b8/18/6ae056f2a80697843b04859ed2c547c19d61d31d090c02ac7e87ac44122a/archangel-0.3.tar.gz" }, { "comment_text": "", "digests": { "md5": "d9b012699dfce6ffe457c18042117e31", "sha256": "769b6d60975737060bdf9b01dfb4c8035c39ecfac84d6b281dbca6f0e25ca719" }, "downloads": -1, "filename": "archangel-0.3.zip", "has_sig": false, "md5_digest": "d9b012699dfce6ffe457c18042117e31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15464, "upload_time": "2013-04-27T14:39:19", "url": "https://files.pythonhosted.org/packages/b1/36/0fe99b3e750fe30cc29da8674a5ec1c2d9deba038bcac32a92cdf262fc37/archangel-0.3.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0bff4194c365b1595d7a906a5e038a2b", "sha256": "6412e9b4a40c74b52037ba54495861c72638c59aeb7348e8392a6cfe4ed2e807" }, "downloads": -1, "filename": "archangel-0.3.tar.gz", "has_sig": false, "md5_digest": "0bff4194c365b1595d7a906a5e038a2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10574, "upload_time": "2013-04-27T14:39:16", "url": "https://files.pythonhosted.org/packages/b8/18/6ae056f2a80697843b04859ed2c547c19d61d31d090c02ac7e87ac44122a/archangel-0.3.tar.gz" }, { "comment_text": "", "digests": { "md5": "d9b012699dfce6ffe457c18042117e31", "sha256": "769b6d60975737060bdf9b01dfb4c8035c39ecfac84d6b281dbca6f0e25ca719" }, "downloads": -1, "filename": "archangel-0.3.zip", "has_sig": false, "md5_digest": "d9b012699dfce6ffe457c18042117e31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15464, "upload_time": "2013-04-27T14:39:19", "url": "https://files.pythonhosted.org/packages/b1/36/0fe99b3e750fe30cc29da8674a5ec1c2d9deba038bcac32a92cdf262fc37/archangel-0.3.zip" } ] }