{ "info": { "author": "Sam Rushing, Eric Huss, IronPort Engineering", "author_email": "sam-coro@rushing.nightmare.com", "bugtrack_url": null, "classifiers": [], "description": "This Python library was evolved at IronPort Systems and has been provided\nas open source by Cisco Systems under an MIT license.\n\nIntro\n=====\n\nShrapnel is a library for high-performance concurrency. It uses\ncoroutines to implement user threads on top of either kqueue (FreeBSD,\nOS X) or /dev/epoll (linux), and is written mostly in Pyrex/Cython,\nsupporting both 32-bit and 64-bit platforms. It is the culmination of\nabout 8 years of work at IronPort Systems, a provider of high-speed\nmail appliances. It was open-sourced by Cisco Systems in late 2011.\n\nStatus\n======\n\nApr 18, 2013: I've recently merged in a long chain of branches for several\nimportant features:\n\n * Support for pure-cython servers (branch 'pxdfix')\n * Full DNS resolver implementation (branch 'dns-cache')\n * Updated postgres support (branch 'postgres')\n * Included OpenSSL support\n\n\nFeatures\n========\n\n * Lightweight threads, event-driven scheduler.\n * Underneath: non-blocking operations on descriptors, like sockets and pipes.\n * On top, synchronous API for straight-line, simple code.\n * Highly scalable - tens or hundreds of thousands of connections/threads.\n * Thread synchronization primitives, like mutexes, semaphores, etc...\n * with_timeout(): wrap any funcall with a timeout.\n * Wait on kqueue events like file/directory changes, signals, processes, etc... [kqueue only]\n * DNS resolver and cache\n * HTTP server and client (plus WebSocket, RFC6455 & hixie-76)\n * Support for TLS via tlslite and openssl (plus NPN for both)\n * other protocols/codecs: ldap, asn1, ftp, mysql, postgres, AMQP.\n * `MIT License`_.\n \nAdvantages\n==========\n\nCompared to other concurrency packages available for Python,\nShrapnel gives you:\n\n * Speed and Efficiency: the entire scheduler, poller, socket layer,\n synchronization objects, etc... are written in Cython, with an\n emphasis on performance and low memory usage.\n * Stock Python: Shrapnel works with out-of-the-box CPython [2.X]. No\n special variants of Python are needed, it will even work with your\n OS's OEM python installation. So you can use all the external\n libraries/modules you've come to rely on.\n * No Callbacks: no need to cuisinart your application into a thousand\n callbacks. No need to decompose every action into a state\n machine. Write simple, performant code now without having to send\n your programmers to class.\n * Drop to Cython for speed: all the capabilities of the system are\n available from Cython, so you can e.g. write a server entirely in\n Cython for speed. You can interface with external libraries, and\n do thread switches from Cython or C. It's even possible to have\n external C code call back into shrapnel. This makes it easy to\n prototype your application in Python, and then push only the hot\n spots into Cython.\n * Timeouts: Shrapnel provides a general timeout mechanism that can be\n used to wrap any function call with a timeout.\n * Profiler: Thread-aware profiler generates HTML reports.\n\n\nTutorial\n========\n\nSee http://ironport.github.com/shrapnel/tutorial.html\n\nAPI Documentation\n=================\n\nSee http://ironport.github.com/shrapnel/\n\n.. _MIT License: http://www.opensource.org/licenses/mit-license.html\n\n", "description_content_type": null, "docs_url": null, "download_url": "https://pypi.python.org/pypi?name=coro", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/ironport/shrapnel", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "coro", "package_url": "https://pypi.org/project/coro/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/coro/", "project_urls": { "Download": "https://pypi.python.org/pypi?name=coro", "Homepage": "http://github.com/ironport/shrapnel" }, "release_url": "https://pypi.org/project/coro/1.0.5/", "requires_dist": null, "requires_python": null, "summary": "IronPort Coroutine/Threading Library", "version": "1.0.5" }, "last_serial": 1514714, "releases": { "1.0.0-000": [], "1.0.1-000": [], "1.0.2-000": [], "1.0.3-000": [ { "comment_text": "", "digests": { "md5": "b5dd8db0f767274553729b49e336082b", "sha256": "d6e70908fb844225cf9410bf84ad42d9c1f17ea57b0d9dcd31d337246f1e1f4d" }, "downloads": -1, "filename": "coro-1.0.3-000.tar.gz", "has_sig": true, "md5_digest": "b5dd8db0f767274553729b49e336082b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 212355, "upload_time": "2015-02-20T20:51:34", "url": "https://files.pythonhosted.org/packages/83/8e/164dc045b94bbd17a45ef1496599da6623976d1ed217a14cf928ef5438c0/coro-1.0.3-000.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "9d211d5d240bc0823eec1e1764d5bfba", "sha256": "344b98b02c73a551a5217b7fc683c64dce6c627435ee3e9ed89297b130582e24" }, "downloads": -1, "filename": "coro-1.0.5.tar.gz", "has_sig": false, "md5_digest": "9d211d5d240bc0823eec1e1764d5bfba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 305796, "upload_time": "2015-04-21T15:17:51", "url": "https://files.pythonhosted.org/packages/2f/72/75725eafbf1393091c57001aad24109908904ebfc454b259dce2f57d0ef8/coro-1.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9d211d5d240bc0823eec1e1764d5bfba", "sha256": "344b98b02c73a551a5217b7fc683c64dce6c627435ee3e9ed89297b130582e24" }, "downloads": -1, "filename": "coro-1.0.5.tar.gz", "has_sig": false, "md5_digest": "9d211d5d240bc0823eec1e1764d5bfba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 305796, "upload_time": "2015-04-21T15:17:51", "url": "https://files.pythonhosted.org/packages/2f/72/75725eafbf1393091c57001aad24109908904ebfc454b259dce2f57d0ef8/coro-1.0.5.tar.gz" } ] }