{ "info": { "author": "Xavier Barbosa", "author_email": "clint.northwood@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: System :: Clustering" ], "description": "Cooperate\n=========\n\n**cooperate** is a shell command that execute commands in a cooperative manner, by distributing them to many nodes.\n\nIt requires Python >= 3.3 and asyncio.\n\n\nFor example::\n\n cooperate --local -- echo FOO\n\nWill execute the job \"echo FOO\" locally.\n\nThis one::\n\n cooperate --ssh me@my.node -- echo FOO\n\nIs barelly equivalent to::\n\n ssh me@my.node echo FOO\n\nYou can declare as many nodes as you want. For example::\n\n cooperate --local --ssh me@my.node --ssh me@my.second.node -- echo FOO\n\nIs equivalent to::\n\n echo FOO\n ssh me@my.node echo FOO\n ssh me@my.second.node echo FOO\n\nYou can also declare many jobs at once. For example::\n\n cooperate --local --command \"echo FOO\" --command \"echo BAR\"\n\nIs equivalent to::\n\n echo FOO\n echo BAR\n\n\nInstallation\n------------\n\n::\n\n pip install cooperate\n\n\nNodes\n-----\n\nCommands can be distribued thru these kind of nodes:\n\n* **--local** execute locally\n* **--ssh** execute thru ssh\n* **--docker** execute in a local docker container\n* **--lxc** execute in a local lxc container\n\nThese options can be repeated as often as needed.\n\nModes\n-----\n\nBy default, it spawns every commands to every nodes.\n\nThe **-m**, **--mode** allow to configure the desired mode.\n\nThe **all** mode executes all commands in all nodes::\n\n cooperate --local --ssh me@my.node --ssh me@my.second.node \\\n --command=\"echo FOO\" --command=\"echo BAR\"\n\nIs equivalent to::\n\n echo FOO\n echo BAR\n ssh me@my.second.node echo FOO\n ssh me@my.second.node echo BAR\n\n\nThe **distribute** mode share the commands out among all the nodes::\n\n cooperate --local --ssh me@my.node --ssh me@my.second.node \\\n --command=\"echo FOO\" --command=\"echo BAR\" --mode=distribute\n\nIs equivalent to::\n\n echo FOO\n ssh me@my.second.node echo BAR\n\n\nConcurrency\n-----------\n\nBy default, it executes all jobs simultaneously.\n\nThe **-b**, **--batch** option allows to execute on only a specify number of jobs at a time. Both percentages and finite numbers are supported::\n\n cooperate --local --concurrence 1 \\\n --command=\"echo FOO\" --command=\"echo BAR\" --command=\"echo BAZ\"\n\n cooperate --local --concurrence 33% \\\n --command=\"echo FOO\" --command=\"echo BAR\" --command=\"echo BAZ\"\n\nThe concurrency system maintains a window of running jobs. When a job returns then it starts a remnant job and so on.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/johnnoone/cooperate", "keywords": "infrastructure,asyncio", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "cooperate", "package_url": "https://pypi.org/project/cooperate/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/cooperate/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/johnnoone/cooperate" }, "release_url": "https://pypi.org/project/cooperate/0.3.1/", "requires_dist": null, "requires_python": null, "summary": "Distribute commands to many nodes", "version": "0.3.1" }, "last_serial": 1660094, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "d927fe54a5d2a0a46610c186ae1a450b", "sha256": "8e0c448a24970a9c03f9d37aff52032f185c692edc0d01868ca8a285107870c7" }, "downloads": -1, "filename": "cooperate-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d927fe54a5d2a0a46610c186ae1a450b", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9203, "upload_time": "2015-06-15T13:47:27", "url": "https://files.pythonhosted.org/packages/f9/a7/139f0888835299b4a171afde3dddc206cf0c4c35df0ea57d130026b6b24f/cooperate-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35ac3cf570dbdd7372fe2e7e35f2125d", "sha256": "6663b162f80bfb2ed041c14594bb78e42d121c021d87bab36306536233eb7690" }, "downloads": -1, "filename": "cooperate-0.1.tar.gz", "has_sig": false, "md5_digest": "35ac3cf570dbdd7372fe2e7e35f2125d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5770, "upload_time": "2015-06-15T13:47:23", "url": "https://files.pythonhosted.org/packages/fd/6f/7667cc60720e626760136d6b9660f9435120a1df7f5315123db40b1f099e/cooperate-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "d2a59cabd4a6beab4bbc41d0e2745228", "sha256": "0af7125d76cb607ac7a9feb70782382456cbab6b396d74fdd474969e5348aaa4" }, "downloads": -1, "filename": "cooperate-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d2a59cabd4a6beab4bbc41d0e2745228", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10826, "upload_time": "2015-06-23T16:00:14", "url": "https://files.pythonhosted.org/packages/79/8d/1fd8605e9607da850ddd4e50640726ff7f2a5ef74673317b92d4c0998661/cooperate-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f392146cc5c28f591b12fe7828c87235", "sha256": "efb92869572dbb39593ef1b7871ac1f87098d79a32989ec6e6c8af4d68d46c6a" }, "downloads": -1, "filename": "cooperate-0.2.tar.gz", "has_sig": false, "md5_digest": "f392146cc5c28f591b12fe7828c87235", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6681, "upload_time": "2015-06-23T15:57:33", "url": "https://files.pythonhosted.org/packages/12/34/88d960665f90775069bf24acc04f8a4da26de8266bc2d7fc64b8e2270824/cooperate-0.2.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "6bdf5732b8861203e86e7bc6064fc757", "sha256": "b2350196d588470cfb4991870ef3cd47fd95630e4ce053d9200ed4e5d7e50ce2" }, "downloads": -1, "filename": "cooperate-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6bdf5732b8861203e86e7bc6064fc757", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9008, "upload_time": "2015-08-01T18:34:27", "url": "https://files.pythonhosted.org/packages/14/08/64479fde167119728397272a8fd46204e869742725ccbbdf10618373e62e/cooperate-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ed8f60f3a1222acd3c07a7c6e4cf03a", "sha256": "2ec1860de324a2daa6ff8d7928694f9ee5b812fbf51a5ca856076ad4f640f351" }, "downloads": -1, "filename": "cooperate-0.3.1.tar.gz", "has_sig": false, "md5_digest": "5ed8f60f3a1222acd3c07a7c6e4cf03a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5517, "upload_time": "2015-08-01T18:34:23", "url": "https://files.pythonhosted.org/packages/fe/26/750cf9483184fc8e727720b7d217fc610bbff3675c771df322473e898190/cooperate-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6bdf5732b8861203e86e7bc6064fc757", "sha256": "b2350196d588470cfb4991870ef3cd47fd95630e4ce053d9200ed4e5d7e50ce2" }, "downloads": -1, "filename": "cooperate-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6bdf5732b8861203e86e7bc6064fc757", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9008, "upload_time": "2015-08-01T18:34:27", "url": "https://files.pythonhosted.org/packages/14/08/64479fde167119728397272a8fd46204e869742725ccbbdf10618373e62e/cooperate-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ed8f60f3a1222acd3c07a7c6e4cf03a", "sha256": "2ec1860de324a2daa6ff8d7928694f9ee5b812fbf51a5ca856076ad4f640f351" }, "downloads": -1, "filename": "cooperate-0.3.1.tar.gz", "has_sig": false, "md5_digest": "5ed8f60f3a1222acd3c07a7c6e4cf03a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5517, "upload_time": "2015-08-01T18:34:23", "url": "https://files.pythonhosted.org/packages/fe/26/750cf9483184fc8e727720b7d217fc610bbff3675c771df322473e898190/cooperate-0.3.1.tar.gz" } ] }