{ "info": { "author": "fufu", "author_email": "fufu.bluesand@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# PIKACHU\na PIKA based, Cuter and more Human rabbitmq queue Utility (\u00b4_\u309d`)\n\n## Quick peek\n### put a message into queue(independent by namespace):\n```python\nimport PIKACHU\nPIKACHU.SimpleProducor(\"amqp://localhost\").put(dict(data=\"some message\"))\n```\n\n### get some messages from queue:\n\n```python\nfor envelope in PIKACHU.SimpleConsumer(\"amqp://localhost\").get():\n print(\"get message:\", envelope.message)\n envelope.message_read()\n```\n\n### use listener to listen message arrival constantly:\n\n```python\ndef callback(envelope):\n print(\"get message:\", envelope.message)\n envelope.message_read()\n\nconsumer = PIKACHU.SimpleAsyncConsumer(settings.amqp)\nioloop = consumer.start_listen(callback)\nioloop.start()\n```\n\n\n\n# Installation\n\n```bash\npip install git+https://github.com/smilefufu/PIKACHU@master\n```\nor from pypi\n```bash\npip install PI-KA-CHU\n```\n\n# Main idea\n\nPIKACHU focus on the business scene of message queue, so users don't have to know the detail concept of rabbitmq, like exchange, exchange type, binding keys... They just have to know what pattern of queue they need to get their bussiness done, and choose it from PIKACHU. That's all.\n\nSo PIKACHU plans to provide some common used queue patterns in the human way :) Like the basic pattern put/listen and put/get. Also the publish/subscribe pattern. And other patterns is also in schedule.\n\n### PIKACHU.Producer\n\nThe base class of all producers. All producers share the same instantiate method with two basic parameters:\n\n- url: The amqp string to connect to rabbitmq\n- namespace: Namespace for different business. Non-necessary paramter, default value is \"pikachu\".\n\n### PIKACHU.AsyncConsumer\n\nThe base class of all async consumer. Considering nearly all business scene need an async consumer so all consumer in PIKACHU are async consumer, except SimpleConsumer which provides ***get*** method. Prameters:\n\n- url: The amqp string to connect to rabbitmq\n- namespace: Namespace for different business. Non-necessary paramter, default value is \"pikachu\".\n- tornado_mode: If True, the consumer will use pika.TornadoConnection, which use same ioloop as tornado. Default value is False, a pika.SelectConnection is used, so PIKACHU has it's own ioloop, users have to merge their ioloop with PIKACHU's ioloop if they have one.\n\n### PIKACHU.SimpleConsumer\n\nSame parameters as PIKACHU.Producer\n\n# Docs\n\ntodo: finish the damn doc\n\n# Examples\n\n### put/get pattern\n\nproducor code:\n\n```python\nimport PIKACHU\nproducor = PIKACHU.SimpleProducor(\"amqp://localhost\", namespace=\"my_biz\")\nmessage = dict(content=\"some message\")\nproducor.put(message)\n```\n\nconsmer code (gets 10 messages max every time it runs):\n\n```python\nimport PIKACHU\nconsumer = PIKACHU.SimpleConsumer(\"amqp://localhost\")\nfor envelope in consumer.get(max_len=10):\n print(\"get message with content:\", envelope.message[\"conent\"])\n envelope.message_read() # mark message as read, it's necessary in put/get or put/listen pattern. If you miss it, all unmarked message will be delivered again next time you start your consumer.\n```\n\n### put/listen pattern\n\nproducor code (same as put/get pattern)\n\nconsumer code (wait and listen the messages):\n\n```python\nimport PIKACHU\ndef callback(envelope):\n print(\"get message with content:\", envelope.message[\"content\"])\n envelope.message_read()\n\nconsumer = PIKACHU.SimpleAsyncConsumer(settings.amqp)\nioloop = consumer.start_listen(callback)\nioloop.start() # start the loop to keep the process running\n```\n\n### publish/subscribe pattern\n\npublisher code:\n\n```python\nimport PIKACHU\npublisher = PIKACHU.BroadCaster(\"amqp://localhost\", namespace=\"CCTV\")\nmessage = dict(news=\"today's news\")\npublisher.publish(message, to_hub=\"ten\")\n```\n\nsubscriber code:\n\n```python\nimport PIKACHU\nsubscriber = PIKACHU.Receiver(\"amqp://localhost\", namespace=\"CCTV\")\ndef cb(envelope):\n print(\"get news:\", envelope.message[\"news\"])\nioloop = subscriber.subscribe(cb, from_hub=\"ten\")\nioloop.start() # start the loop to keep the process running\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/smilefufu/PIKACHU", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "PI-KA-CHU", "package_url": "https://pypi.org/project/PI-KA-CHU/", "platform": "", "project_url": "https://pypi.org/project/PI-KA-CHU/", "project_urls": { "Homepage": "https://github.com/smilefufu/PIKACHU" }, "release_url": "https://pypi.org/project/PI-KA-CHU/0.2.5/", "requires_dist": [ "pika" ], "requires_python": "", "summary": "a PIKA based, Cuter and more Human rabbitmq queue Utility (\u00b4_\u309d`)", "version": "0.2.5" }, "last_serial": 5180365, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "d19dfe394fb6c9655b6c6d0c91ffe4ab", "sha256": "26e24a462f33b39866720c9dfea32658345019ab161e45d4abdaa51a85146091" }, "downloads": -1, "filename": "PI_KA_CHU-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d19dfe394fb6c9655b6c6d0c91ffe4ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7442, "upload_time": "2018-07-09T07:32:52", "url": "https://files.pythonhosted.org/packages/8d/cb/a0434691768862bdef8375d9e0cf9474019b0ce85cf88d0f4cb591c17e20/PI_KA_CHU-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7256c3a76131a339e9c7c0a76d5c5e3", "sha256": "66875b9e59c7601d3df96bf902ba411617e5fd0dbbbeeb937d3d9e3a4869bed4" }, "downloads": -1, "filename": "PI-KA-CHU-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c7256c3a76131a339e9c7c0a76d5c5e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5613, "upload_time": "2018-07-09T07:32:53", "url": "https://files.pythonhosted.org/packages/cb/be/e4920e35568aa2b384ecaee93b0e916de857c7d6aa3ea1b7714480731942/PI-KA-CHU-0.1.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "9c3287dce5ca4b4e4f22f5fd1c5b59d2", "sha256": "2f7b4d03288d2958aa477fd906deb8612ea24126bd8a9c4de5e59a47afaf9730" }, "downloads": -1, "filename": "PI_KA_CHU-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9c3287dce5ca4b4e4f22f5fd1c5b59d2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9029, "upload_time": "2018-07-15T07:26:27", "url": "https://files.pythonhosted.org/packages/0e/f9/1bc039e85d959e3ec71f1cb7da78bf51c097066918509d98a2eaeba1b59d/PI_KA_CHU-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c9477195289f0c4e41e4dd693d7e305", "sha256": "b07a0cb9b63c415808c98100181ff80dbf1fb2113772f6b94139d3a712d617f4" }, "downloads": -1, "filename": "PI-KA-CHU-0.2.1.tar.gz", "has_sig": false, "md5_digest": "9c9477195289f0c4e41e4dd693d7e305", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8706, "upload_time": "2018-07-15T07:26:29", "url": "https://files.pythonhosted.org/packages/1d/a0/88a4332a253c734fde58bbe53d163bdc4de8623da3719143c8798339abe1/PI-KA-CHU-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "709542ea444af3d90e5b291295e9a27a", "sha256": "963a31de699ec6289ea2eb7d9133662deaa57da8d4e1e212afaaabfecd18b44b" }, "downloads": -1, "filename": "PI_KA_CHU-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "709542ea444af3d90e5b291295e9a27a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9056, "upload_time": "2018-08-31T02:48:57", "url": "https://files.pythonhosted.org/packages/0a/27/cb7f483b4ddd86376c1886b766a41c61695c50a9366371b0c11f6e0781e0/PI_KA_CHU-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f80a4b237ad4738ea226e0d1527dd6f6", "sha256": "1b5d3fe49510e573041e8417211dc0a8226aaeea41c2098e1b2c4fd72c834503" }, "downloads": -1, "filename": "PI-KA-CHU-0.2.2.tar.gz", "has_sig": false, "md5_digest": "f80a4b237ad4738ea226e0d1527dd6f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8745, "upload_time": "2018-08-31T02:48:59", "url": "https://files.pythonhosted.org/packages/a8/b9/e4d21ee2a36b50934320092fec28582da1f2c5c950f4e3f4c01ed63b842c/PI-KA-CHU-0.2.2.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "2310396e8240bfefaf223964542657d8", "sha256": "8f7aa0e0415a4a166c53fb2fa9f87694dbf6368df39e0e121416dad8b2a5b6ad" }, "downloads": -1, "filename": "PI_KA_CHU-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2310396e8240bfefaf223964542657d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8990, "upload_time": "2019-04-24T04:49:04", "url": "https://files.pythonhosted.org/packages/ab/6c/8fb72eaeab98953f9261c9a2411f5d81af8c06aae843104c7d6dc738a0cf/PI_KA_CHU-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e59a11e7ea59642ccdfc9a43fa43372", "sha256": "3840bfec6dd0077eaa99880906fe63e8970c176f3400a69412d6fd0c29178f8e" }, "downloads": -1, "filename": "PI-KA-CHU-0.2.5.tar.gz", "has_sig": false, "md5_digest": "3e59a11e7ea59642ccdfc9a43fa43372", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8703, "upload_time": "2019-04-24T04:49:06", "url": "https://files.pythonhosted.org/packages/77/86/5bef46457a9a1171be35ab37c6bb6e15dab81e18ee3b4c41377212ce42f6/PI-KA-CHU-0.2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2310396e8240bfefaf223964542657d8", "sha256": "8f7aa0e0415a4a166c53fb2fa9f87694dbf6368df39e0e121416dad8b2a5b6ad" }, "downloads": -1, "filename": "PI_KA_CHU-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2310396e8240bfefaf223964542657d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8990, "upload_time": "2019-04-24T04:49:04", "url": "https://files.pythonhosted.org/packages/ab/6c/8fb72eaeab98953f9261c9a2411f5d81af8c06aae843104c7d6dc738a0cf/PI_KA_CHU-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e59a11e7ea59642ccdfc9a43fa43372", "sha256": "3840bfec6dd0077eaa99880906fe63e8970c176f3400a69412d6fd0c29178f8e" }, "downloads": -1, "filename": "PI-KA-CHU-0.2.5.tar.gz", "has_sig": false, "md5_digest": "3e59a11e7ea59642ccdfc9a43fa43372", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8703, "upload_time": "2019-04-24T04:49:06", "url": "https://files.pythonhosted.org/packages/77/86/5bef46457a9a1171be35ab37c6bb6e15dab81e18ee3b4c41377212ce42f6/PI-KA-CHU-0.2.5.tar.gz" } ] }