{ "info": { "author": "Abi M.Sangarab", "author_email": "abi@singiro.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Programming Language :: C", "Programming Language :: Python :: 2.7" ], "description": "TurboMQ\n=======\n\n**TurboMQ** is a simple message queue system. I hope it is fast enough\nto merit the name. In our test it could provide and consume millions of\nmessages in a second. But we delegate the final judgment to the\ndevelopers who use the library. Consider that , currently, it is too\nexperimental and there will be dramatical change in both functionality\nand protocols.\n\nWhy TurboMQ is developed?\n=========================\n\nFirst, I want to explain why a new message queue system is developed.\nThere are many message queue systems available and some of them are\npopular and stable like **RabbitMQ** or **ZMQ**. The most important\nreason behind this implementation is that most of message queue systems\nare designed to handle backend processing like distributing jobs between\nnodes to process huge amount of data or just complete the remained part\nof a business transaction. Certainly, TurboMQ can be used to distribute\nworks between nodes. Moreover, it originally designed to support\nmillions of providers and consumers working with millions of queues and\ntopics.\n\nThe most close (as queue functionality) system is **Redis**. It has a\nremarkable IO mechanism to handle network connections. However, it can\njust utilize one core for one instance. Do we really want to use just\none core of for example 8 available cores? Or do we want to configure\nclustering inside one machine to just use all available cores?\n\n**ZMQ** is a good library. It is fast, stable and useful for many\npurposes. Nonetheless, there is a serious problem in topic-based PUB-SUB\nqueues. The consumers (subscribers) has to be connected before providers\n`(missing message problem solver)`_ otherwise the message is going to be\nlost.\n\nTechnical information\n=====================\n\n**TurboMQ** is a python module. To avoid GIL problems, it is developed\nusing pure **C** and **Cython**. It uses its own event loop system. The\nbenefit is that it is a real multi-threaded event loop and can exploit\nall available cores. The drawback is that it does not support windows.\nAre the bad news finished? No, kqueue has not implemented yet and it\nuses (slow) posix POLL in BSD families. Is there any other good news?\nYes, windows and kqueue support is going to be implemented very soon.\n\nInstallation\n============\n\nInstallation is easy. The package can be installed by pip:\n\n$ sudo pip install turbomq\n\nYou need to download or clone it and then type the python magic:\n\n$ sudo python setup.py install\n\nUsage\n============\n\nTo use **TurboMQ** just import and run the server. The following code runs a server for 10 minutes.\n\n.. code-block:: python\n from turbomq import TurboEngine\n import time\n\n # You can pass the thread count as a second parameter.\n # Otherwise, it will automatically selects 4 threads per core.\n e = TurboEngine('tcp://127.0.0.1:33444')\n\n e.run()\n # \"run\" method will not block the main thread.\n # So you need to simply wait or run your own loop as you want.\n time.sleep(10.0 * 60)\n\n # \"stop\" method just shuts TCP sockets down.\n e.stop()\n\n # After destroy all resources will be freed.\n # Then you can not use this instance anymore.\n e.destroy()\n\nThis code sends a message to server and receives it again.\n\n.. code-block:: python\n from turbomq import TurboClient\n\n # Connects to the server.\n c = TurboClient('tcp://127.0.0.1:33444')\n\n # Creates a mirror queue in client side.\n q = c.get_queue('test')\n\n # Both topic key and data is mandatory in push.\n q.push('hello', 'turbo')\n\n # In pop you need to determine a timeout.\n # So this will wait two seconds. If timeout is exceeded, it will return None.\n print(q.pop('hello', 2))", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/turbomq/engine/archive/0.1.7.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/turbomq/engine", "keywords": "turbomq message queue amqp", "license": "GNU General Public", "maintainer": null, "maintainer_email": null, "name": "turbomq", "package_url": "https://pypi.org/project/turbomq/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/turbomq/", "project_urls": { "Download": "https://github.com/turbomq/engine/archive/0.1.7.tar.gz", "Homepage": "https://github.com/turbomq/engine" }, "release_url": "https://pypi.org/project/turbomq/0.1.7/", "requires_dist": null, "requires_python": null, "summary": "TurboMQ - Message Queue System", "version": "0.1.7" }, "last_serial": 1913489, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "8b78beab8b13dd5508b561cfe8ae30ff", "sha256": "1117688069551695a088fe0320609160b5b62cd42cb4db6199711614daa3533d" }, "downloads": -1, "filename": "turbomq-0.1.3.tar.gz", "has_sig": false, "md5_digest": "8b78beab8b13dd5508b561cfe8ae30ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61811, "upload_time": "2016-01-20T13:50:10", "url": "https://files.pythonhosted.org/packages/20/f5/6a26331a33bc4111cd4073e59f38570b0daa287ac7bd05cf55ecbebc6542/turbomq-0.1.3.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "2c82cebadea9768cd1e468a2a2a8011d", "sha256": "687cb6be9220cc540220ebce43ede8966f7c66ebf99dd4e70e936bdd41bad7bd" }, "downloads": -1, "filename": "turbomq-0.1.5.tar.gz", "has_sig": false, "md5_digest": "2c82cebadea9768cd1e468a2a2a8011d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61882, "upload_time": "2016-01-20T14:03:41", "url": "https://files.pythonhosted.org/packages/2e/e8/1efde40b4d63b1dd3af52fc826bd21dd5ceba4c3160ef47f045d2cbb00d8/turbomq-0.1.5.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "7e5d0f4c3517e249c40ce3a2d7e92d82", "sha256": "dc87c26acfaa79f33cb7155a2b3293f50b00078aaa633d0cb1a32417fa7636aa" }, "downloads": -1, "filename": "turbomq-0.1.7.tar.gz", "has_sig": false, "md5_digest": "7e5d0f4c3517e249c40ce3a2d7e92d82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65205, "upload_time": "2016-01-20T16:16:43", "url": "https://files.pythonhosted.org/packages/75/14/4dc7a9f221b5890561cb10630af8672ffc709acb5eb69fcc488b70eafe68/turbomq-0.1.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7e5d0f4c3517e249c40ce3a2d7e92d82", "sha256": "dc87c26acfaa79f33cb7155a2b3293f50b00078aaa633d0cb1a32417fa7636aa" }, "downloads": -1, "filename": "turbomq-0.1.7.tar.gz", "has_sig": false, "md5_digest": "7e5d0f4c3517e249c40ce3a2d7e92d82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65205, "upload_time": "2016-01-20T16:16:43", "url": "https://files.pythonhosted.org/packages/75/14/4dc7a9f221b5890561cb10630af8672ffc709acb5eb69fcc488b70eafe68/turbomq-0.1.7.tar.gz" } ] }