{ "info": { "author": "krezreb", "author_email": "josephbeeson@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# Use cases\n\n- Got a script that you want to be able to run multiple instances of in parallel?\n- Want to write a program from scratch that's ready to scale up?\n- Using someone else's code that has race conditions and want to singleton-ize it?\n\n# Intro\n\nHungry Hungry Hippos, (HHH) is a python implementation of redlock https://redis.io/topics/distlock with a set of examples that use docker, redis and docker compose.\nThe advantage of this approch, compared to multithreading, is that is can be applied in a single-threaded context (for example if you have to integrate existing code), or in a mutliple container instance context (think microservices) \n\n# Features\n\n- atomic locking guarantees single lock acquisition\n- works across machines / containers\n- handles dead lock recovery\n- can wrap existing code for cases when you cannot or do not want to do a rewrite.\n\n# Key concepts\n\n- Process isolation\n- Destributed locks (see https://redis.io/topics/distlock)\n- Command orchestration\n\n# Toolchain\n\n- docker - images, containers, volumes\n- docker-compose - building, linking services, scaling services\n- redis - in memory key-value database\n\n# Installation\n\npip install hungry-hungry-hippos\n\nSee examples for use cases\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/krezreb/hungryhungryhippos", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "hungry-hungry-hippos", "package_url": "https://pypi.org/project/hungry-hungry-hippos/", "platform": "", "project_url": "https://pypi.org/project/hungry-hungry-hippos/", "project_urls": { "Homepage": "https://github.com/krezreb/hungryhungryhippos" }, "release_url": "https://pypi.org/project/hungry-hungry-hippos/0.7/", "requires_dist": [ "redis" ], "requires_python": "", "summary": "A python implementation of redlock, with examples", "version": "0.7" }, "last_serial": 5862691, "releases": { "0.3": [ { "comment_text": "", "digests": { "md5": "17b083e26fe89faf94eb2622c6227b76", "sha256": "f7636c2c9905eb87ee0fd5de28daeda9f1a98d2b3472ed4efda0f32b99829773" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "17b083e26fe89faf94eb2622c6227b76", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5130, "upload_time": "2019-05-15T12:17:34", "url": "https://files.pythonhosted.org/packages/c1/5d/098f5dd79a6763cf1997bec4634b945d63a39784af8a0d3d1d861cd6b913/hungry_hungry_hippos-0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "acc77d9882373142806a52d785819a7f", "sha256": "2c6b4da681db31f01a29908574541ac49af1c7c7794bce6cd9383b11a241c001" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.3.tar.gz", "has_sig": false, "md5_digest": "acc77d9882373142806a52d785819a7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3254, "upload_time": "2019-05-15T12:17:36", "url": "https://files.pythonhosted.org/packages/26/13/7756e9cb2a76fe2ef872d214141607681b7759ea16dd2a069d3a9a8cfce1/hungry_hungry_hippos-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "490b156263df182c90c8758cf3eff6a9", "sha256": "02f2975807a2b7ca9e4482153c4e28116b079b7b2a1f6d0f67b273b176e40267" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "490b156263df182c90c8758cf3eff6a9", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5549, "upload_time": "2019-05-16T11:54:54", "url": "https://files.pythonhosted.org/packages/02/02/5bc86c9b0d7dc1bc8472c3a81c40cbfe3063452e0b592b31ce8becfa84b4/hungry_hungry_hippos-0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc0ad35ac331dc2ee31c73c38583b536", "sha256": "b74f3b794ece233bf5ab0a7ca338e74b05d92610aae545c859096f6813fe74f4" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.4.tar.gz", "has_sig": false, "md5_digest": "dc0ad35ac331dc2ee31c73c38583b536", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3641, "upload_time": "2019-05-16T11:54:55", "url": "https://files.pythonhosted.org/packages/74/82/5aefd662b7141405ea32bf0bfe823e62f358f4d0a47c154ec9f67b4107c5/hungry_hungry_hippos-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "dc8f769bc9bd8c57a748838ed9c19d72", "sha256": "02b64d6dc2c47e6f11ae0d8838c34acaf9dcf2485df15454869994bcf2a4a14e" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "dc8f769bc9bd8c57a748838ed9c19d72", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5569, "upload_time": "2019-06-03T15:21:52", "url": "https://files.pythonhosted.org/packages/09/0d/1e11a552da2e926c735f30645f66f2cc6c1ea6198a87b7cc516b74ae19d0/hungry_hungry_hippos-0.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e70d150b495481a7ba8b59d1d2c2a7bf", "sha256": "201ae5f029d5dcecd1230da990b0cfe48cfea2f7803fb9396f9799df71e47183" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.5.tar.gz", "has_sig": false, "md5_digest": "e70d150b495481a7ba8b59d1d2c2a7bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3657, "upload_time": "2019-06-03T15:21:53", "url": "https://files.pythonhosted.org/packages/ed/19/dd371d12553c0f3f232e1c8bae29fb00204fdf5817bd0e62c11dd949de65/hungry_hungry_hippos-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "9b3c16aef807e2b61924f1647d98c5cb", "sha256": "40c4b6e5dc29f291050c702ea9db8a5dac5fbf19c200c86adf543447d938ea5c" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "9b3c16aef807e2b61924f1647d98c5cb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5702, "upload_time": "2019-06-04T11:24:14", "url": "https://files.pythonhosted.org/packages/7b/aa/6c47f82bc78541c4d61e7212c59a5175a2bbf2051fc48983f649e29e77b0/hungry_hungry_hippos-0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "badcd25bece42c4c6fcf9fa607de640c", "sha256": "822d7537c1b51f6281987da9fe63737956265ce10f73cb55ebc9defe5c6b84c1" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.6.tar.gz", "has_sig": false, "md5_digest": "badcd25bece42c4c6fcf9fa607de640c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3785, "upload_time": "2019-06-04T11:24:16", "url": "https://files.pythonhosted.org/packages/e1/80/f41b6e44c8c008c235eca8938e41ccf68f190311cb2364b1d8d579a86056/hungry_hungry_hippos-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "00b9cac4a9ad49c1a4c4c15a4098c9f2", "sha256": "f8baed22a7cdeed95296fa05acbdb249410241297b8dcbf7ea6b6d858051d839" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "00b9cac4a9ad49c1a4c4c15a4098c9f2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5709, "upload_time": "2019-09-20T14:42:53", "url": "https://files.pythonhosted.org/packages/24/82/f0a8a1a1b870311f40f6a308ace6a637682954986a5f173b23d71aaf23d1/hungry_hungry_hippos-0.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb78962ae0674ba496800780a4c58a5c", "sha256": "4bbfaf7d76cfa68fddf4761496a86904c1bba60ee476e30dfe629e3954a52d56" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.7.tar.gz", "has_sig": false, "md5_digest": "eb78962ae0674ba496800780a4c58a5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3789, "upload_time": "2019-09-20T14:42:54", "url": "https://files.pythonhosted.org/packages/91/e8/70c5a3145f64097e650c0bf83d46fc2be3191b3682f414e716867f246784/hungry_hungry_hippos-0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "00b9cac4a9ad49c1a4c4c15a4098c9f2", "sha256": "f8baed22a7cdeed95296fa05acbdb249410241297b8dcbf7ea6b6d858051d839" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "00b9cac4a9ad49c1a4c4c15a4098c9f2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5709, "upload_time": "2019-09-20T14:42:53", "url": "https://files.pythonhosted.org/packages/24/82/f0a8a1a1b870311f40f6a308ace6a637682954986a5f173b23d71aaf23d1/hungry_hungry_hippos-0.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb78962ae0674ba496800780a4c58a5c", "sha256": "4bbfaf7d76cfa68fddf4761496a86904c1bba60ee476e30dfe629e3954a52d56" }, "downloads": -1, "filename": "hungry_hungry_hippos-0.7.tar.gz", "has_sig": false, "md5_digest": "eb78962ae0674ba496800780a4c58a5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3789, "upload_time": "2019-09-20T14:42:54", "url": "https://files.pythonhosted.org/packages/91/e8/70c5a3145f64097e650c0bf83d46fc2be3191b3682f414e716867f246784/hungry_hungry_hippos-0.7.tar.gz" } ] }