{ "info": { "author": "Dennis Kaarsemaker", "author_email": "dennis@kaarsemaker.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Using beanstalkd made easy\n==========================\n\nazuki makes it easy to create tools using\n[beanstalkd](http://kr.github.io/beanstalkd/) tubes for asynchronous execution.\nFrom queueing parallelizing quick shell hacks to integrating asynchronous\nexecution with your django application, azuki lets you do it all.\n\nCLI beanstalk inspection\n------------------------\n\nThe main utility, `azuki`, makes it easy to inspect and modify beanstalk queues\nfrom the command line.\n\n```\n$ azuki tubes [-v]\n$ azuki stats\n$ azuki stats default\n$ azuki stats 123\n```\n\nThe stats command will give you basic statistics, such as the total amount of\nconnections, jobs and commands. If you specify a tube, such as `default`, you\nwill see the statistics of that tube, and if you specify a job ID, you will see\nits details and content.\n\nThe tubes command shows a list of tubes. Add the -v parameter to also get a\nsummary of all processes and jobs for all queues.\n\nPeeking at tubes\n----------------\n\n```\n$ azuki peek-delayed default\n$ azuki peek-ready default\n$ azuki peek-buried default\n$ azuki peek 123\n```\n\nWith the first three commands above you can look at the first delayed, ready or\nburied job in a tube. If you use the `--ask` option as well, you will be asked\nwhether you want to delete, bury or kick the job. The author is fond of `azuki\npeek-buried --ask` to do cleanup of failed jobs.\n\nThe last command will peek at a specific job, given its id number.\n\nManipulating jobs and tubes\n---------------------------\n\n`azuki kick 100 default`\n\nThis would kick 100 jobs in the default queue, moving them from buried back to\nready.\n\n```\nazuki bury 123\nazuki kick 123\n```\n\nIf you want to bury or kick a specific job, use the commands above.\n\nQueueing shell commands\n-----------------------\nAzuki was originally written to easily parallelize shell jobs. Of course [gnu\nparallel](http://www.gnu.org/software/parallel/) can be used if you just want\nparallelization, but I also needed to be able to adjust parallelism, pause\neverything and add jobs while the application was running. In short, I needed\nto use a queue, and beanstalk is my queue of choice.\n\nThe original task was to update the iLO firmware of thousands of HP servers in\nan automated, yet controlled way. To do this, first one puts jobs in the tube:\n\n```\nfor ilo in $(\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see .\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/seveas/azuki", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "azuki", "package_url": "https://pypi.org/project/azuki/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/azuki/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/seveas/azuki" }, "release_url": "https://pypi.org/project/azuki/1.2/", "requires_dist": null, "requires_python": null, "summary": "Beanstalkd utilities for CLI and python", "version": "1.2" }, "last_serial": 1751663, "releases": { "0.9": [ { "comment_text": "", "digests": { "md5": "8113db2f3cf84e6d4d648e4223296eb4", "sha256": "11cc65c0622236890c704c610e2581d1e44ea5cb4707ad3376ddd5b8e0febe56" }, "downloads": -1, "filename": "azuki-0.9.tar.gz", "has_sig": false, "md5_digest": "8113db2f3cf84e6d4d648e4223296eb4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17288, "upload_time": "2014-09-14T19:57:21", "url": "https://files.pythonhosted.org/packages/22/f3/77735245df44a942967a15e28568d609f65a7495e7a281fe53c773bfca46/azuki-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "5fc173fe85b0d2852f1a84e05cd32a6f", "sha256": "8f18211d28e441255d33619cae588ce5aa502e76a310e0605a397518571317c3" }, "downloads": -1, "filename": "azuki-0.9.1.tar.gz", "has_sig": false, "md5_digest": "5fc173fe85b0d2852f1a84e05cd32a6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17535, "upload_time": "2014-09-16T09:46:30", "url": "https://files.pythonhosted.org/packages/4d/8c/d11d2fd75aa17d3c198e12444530f325812f33c5c9db212460155bb422f6/azuki-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "ca30637de287ade36559052ca03ec5a2", "sha256": "8d3d632a04c531bb9fd315f5824b382a033df705f931156a0f4d3ec1677ff881" }, "downloads": -1, "filename": "azuki-0.9.2.tar.gz", "has_sig": false, "md5_digest": "ca30637de287ade36559052ca03ec5a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17799, "upload_time": "2014-09-18T12:15:32", "url": "https://files.pythonhosted.org/packages/1c/66/38f6e3df352ede7b01c6c669365f2bf50830e873253ae8f997cf88836e59/azuki-0.9.2.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "4df186f1fc2a42544c7f9b23266fdf29", "sha256": "babc55e855266f38721a5c008547b25999fb2061a12dd74048fb0391e23ff055" }, "downloads": -1, "filename": "azuki-1.0.tar.gz", "has_sig": false, "md5_digest": "4df186f1fc2a42544c7f9b23266fdf29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21432, "upload_time": "2015-04-12T07:25:44", "url": "https://files.pythonhosted.org/packages/1e/36/5886203b7f544ce5abf8f157113e09edf42ead18b2f3ebbb15ed86b52755/azuki-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "ca59c4146c270f53e1845a5688d3a01f", "sha256": "59adcef98165a4cb41b476568df96f9093df0820f5d07727d2146861f912b0d8" }, "downloads": -1, "filename": "azuki-1.1.tar.gz", "has_sig": false, "md5_digest": "ca59c4146c270f53e1845a5688d3a01f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21996, "upload_time": "2015-10-04T21:06:38", "url": "https://files.pythonhosted.org/packages/13/33/2f6df1a13badcec53f4e6390ecf4a9d15ea63354e238aedd23c9c79466e1/azuki-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "b0db2128f55c0c2724f5dee05cdf0b2e", "sha256": "0373e4e7aaec696da60029c0ae06ff1b9e705c566794ac9d253cc21fb3ae83f7" }, "downloads": -1, "filename": "azuki-1.2.tar.gz", "has_sig": false, "md5_digest": "b0db2128f55c0c2724f5dee05cdf0b2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21997, "upload_time": "2015-10-04T21:22:53", "url": "https://files.pythonhosted.org/packages/ec/ba/5eb8655f185d05d97d506eb050e17d1ff0d5a6db74f68528cb6056189d63/azuki-1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b0db2128f55c0c2724f5dee05cdf0b2e", "sha256": "0373e4e7aaec696da60029c0ae06ff1b9e705c566794ac9d253cc21fb3ae83f7" }, "downloads": -1, "filename": "azuki-1.2.tar.gz", "has_sig": false, "md5_digest": "b0db2128f55c0c2724f5dee05cdf0b2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21997, "upload_time": "2015-10-04T21:22:53", "url": "https://files.pythonhosted.org/packages/ec/ba/5eb8655f185d05d97d506eb050e17d1ff0d5a6db74f68528cb6056189d63/azuki-1.2.tar.gz" } ] }