{ "info": { "author": "Paul McMillan", "author_email": "paul@mcmillan.ws", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: POSIX", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "========\nT-A S.A.\n========\n\nA simple framework for distributed task workflow using redis. Designed\nto be easily extensible with code, rather than excessively featureful\nout of the box.\n\nGetting Started\n---------------\n\nTasa requires a version of Python 2.7. If you're using an older\nversion, now is an excellent time to upgrade. If you're running Python\n3, compatibility patches are welcome.\n\nQuickstart example for Debian:\n\n #) sudo apt-get install redis-server python-pip nmap\n #) sudo pip install -U tasa\n #) wget https://raw.github.com/PaulMcMillan/tasa/master/examples/tnmap.py\n #) mkdir out\n #) tasa tnmap:Runner &\n #) tasa tnamp:Results &\n #) python tnmap.py 10.0.0.0/24\n\nThis quickstart installs tasa, downloads an example script for\ndistributed nmap, runs one task worker and one results worker, and\nthen inserts a job to scan a portion of your local net.\n\nTo actually use this example to distribute a task, on each worker node:\n\n #) sudo apt-get install python-pip nmap\n #) sudo pip install -U tasa\n #) wget https://raw.github.com/PaulMcMillan/tasa/master/examples/tnmap.py\n #) configure `/etc/tassa/tasa.conf` to contain a configuration line like\n `redis='redis://password@example.org:6379/0'`\n #) tasa tnmap:Runner\n\nThen run the results worker and inject jobs from the master\nmachine. Experiment with changing values in the script - the example\nis actually general enough to run any process, not just nmap.\n\nDon't forget to configure your redis server to listen on an ip\naccessible to your clients, and set a password even if you are on a\nprivate network. If you're on an untrusted network, you're responsible\nfor encryption - either tunnel over an SSH port forward, or wrap redis\nin TLS using stud/stunnel.\n\nHow does it work?\n-----------------\n\nTasa is primarily a thin framework to help you build composable work\nflows. Break your problem into small chunks, run workers on several\nmachines, and insert jobs into the worker's input queue, and consume\nthem from the output.\n\nFAQ\n---\n\n* I get a traceback with \"redis.exceptions.ResponseError: operation\n not permitted\"\n\n Did you remember to set a `redis` setting in `/etc/tasa/tasa.conf`?\n This will happen if you added a redis password and did not set a\n connection string.\n\n* What version of redis-server do I need?\n\n Tasa is developed with redis 2.6.16. Older versions aren't explicitly\n tested, though the 2.4 branch will probably work with reduced\n functionality. Newer versions should work without trouble.\n\nSecurity\n--------\n\nThe security of tasa depends entirely on how you use it. If you use a\npassword and tunnel redis communications over an encrypted and\nauthenticated transport, you'll do pretty well. The easiest way to do\nthis is to use SSH port forwarding or ipsec to transport redis\ntraffic. You can also put stud in front of redis to do TLS, though\nthis is more complex.\n\nThe author uses tasa workers primary on disposable cloud hosts.", "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/PaulMcMillan/tasa", "keywords": null, "license": "Simplified BSD", "maintainer": null, "maintainer_email": null, "name": "tasa", "package_url": "https://pypi.org/project/tasa/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/tasa/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/PaulMcMillan/tasa" }, "release_url": "https://pypi.org/project/tasa/0.3.2/", "requires_dist": null, "requires_python": null, "summary": "A simple framework for distributed task workflow using redis.", "version": "0.3.2" }, "last_serial": 967329, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "9b0f3968bef60b24dcd05f9be5a563e5", "sha256": "20affd231bc11400b22cec199da92dbc1432e5f04822d929019ad3d4523e8c0b" }, "downloads": -1, "filename": "tasa-0.1.1.zip", "has_sig": false, "md5_digest": "9b0f3968bef60b24dcd05f9be5a563e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6149, "upload_time": "2013-06-08T02:17:28", "url": "https://files.pythonhosted.org/packages/41/36/793c7fa8f0e0fd811cea543c331f2fbd98eab9d630e38161d83e6a95d05d/tasa-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "445bf7265d3619e60a9d07c2ca0fafae", "sha256": "8bb94ca01bdd1a27ef9f7bac6aad07abf539aeb877e1724f1e3d71d82e63c301" }, "downloads": -1, "filename": "tasa-0.1.2.zip", "has_sig": false, "md5_digest": "445bf7265d3619e60a9d07c2ca0fafae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11498, "upload_time": "2013-06-09T21:24:34", "url": "https://files.pythonhosted.org/packages/98/03/78f2bbded9486e6b92734e136073a00d894119c93dd0595c430eb5204fde/tasa-0.1.2.zip" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "4731f02a03535011b2a73537c40169cf", "sha256": "f3e28b7dbb7db27bf6f1730172313a375afe9583b06bcdbe311fe5aaf7b5fac7" }, "downloads": -1, "filename": "tasa-0.1.3.zip", "has_sig": false, "md5_digest": "4731f02a03535011b2a73537c40169cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8862, "upload_time": "2013-06-10T02:11:29", "url": "https://files.pythonhosted.org/packages/5d/dd/091fdcf5984433f4200e1348d4688fe3ce88c798cc0ad09fa7700cf4c3d8/tasa-0.1.3.zip" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "a128af5854537b24924809bd158a27d9", "sha256": "3b4c8a0eefddbd7174ce472f542e68615671089b7cbc8e8db9172faaad90e809" }, "downloads": -1, "filename": "tasa-0.1.4.zip", "has_sig": false, "md5_digest": "a128af5854537b24924809bd158a27d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8983, "upload_time": "2013-06-10T03:26:10", "url": "https://files.pythonhosted.org/packages/1d/e7/bacd5826804a06c431f3bc1431e2881e7e98a94a985ee74b9cb59b0bc45f/tasa-0.1.4.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9f4b31928ee22df9c40e22992e07d1b4", "sha256": "15481c31c154fd333240b3ed2a58111499ec1421efdf49cc53e481e0f86bbba5" }, "downloads": -1, "filename": "tasa-0.2.0.zip", "has_sig": false, "md5_digest": "9f4b31928ee22df9c40e22992e07d1b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8709, "upload_time": "2013-06-11T05:54:23", "url": "https://files.pythonhosted.org/packages/b8/f1/3881313bcd7646e02969f681b88c38001495a9af1a7a2c9238bf6665b9c1/tasa-0.2.0.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "98ae405184c5dc3e26b125e6b2f802c9", "sha256": "81eae91b205d6ebbf4420d0bf30aaea3125af544fee96e16b01a92bbcb43740c" }, "downloads": -1, "filename": "tasa-0.2.1.zip", "has_sig": false, "md5_digest": "98ae405184c5dc3e26b125e6b2f802c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11848, "upload_time": "2013-08-15T03:27:04", "url": "https://files.pythonhosted.org/packages/db/03/3bd2a5130b8522294142602ed810ccbf95f8acab531a9a16382a70396a00/tasa-0.2.1.zip" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "71dcb6b81c6de89c64352bec10b12484", "sha256": "48c8d3928a318315dfc14d85a51037b9aebb02ade01aa88892d6d364151d36a5" }, "downloads": -1, "filename": "tasa-0.2.2.zip", "has_sig": false, "md5_digest": "71dcb6b81c6de89c64352bec10b12484", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12118, "upload_time": "2013-08-15T05:17:12", "url": "https://files.pythonhosted.org/packages/de/49/ceaa545e935c11c0983e6ad528b94df6f774be9b16d5f074d01f1ca2b562/tasa-0.2.2.zip" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "243f360760006cba71303314cb0d8337", "sha256": "27323cfe8b837f7548e7119380f226d5b09dd7a5860aaee58f065c69f4bbe60a" }, "downloads": -1, "filename": "tasa-0.2.3.zip", "has_sig": false, "md5_digest": "243f360760006cba71303314cb0d8337", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12473, "upload_time": "2013-10-14T08:44:12", "url": "https://files.pythonhosted.org/packages/72/66/f144e95d12b236ff9df225480f1779132e96318bd3498869c72253273eca/tasa-0.2.3.zip" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "40209da83f153d8a66ec2bbe094e67ea", "sha256": "9dfd93038501e9595b49d04f88a7330affc87fb5a109e9e9d4056727922c0528" }, "downloads": -1, "filename": "tasa-0.2.4.zip", "has_sig": false, "md5_digest": "40209da83f153d8a66ec2bbe094e67ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12473, "upload_time": "2013-10-18T23:07:30", "url": "https://files.pythonhosted.org/packages/6e/9c/57ec50fab0ff63027f882dac0b21d67fd1db3761f2a899ddc24f7b24c847/tasa-0.2.4.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "11f76075152a409c4d81d4b874dd5e3d", "sha256": "bdaffaccc78057b6f59da7d0ddfd580fe46fc53d2cc9e1dda0c37f81a3dfdba4" }, "downloads": -1, "filename": "tasa-0.3.0.zip", "has_sig": false, "md5_digest": "11f76075152a409c4d81d4b874dd5e3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12480, "upload_time": "2013-12-26T00:11:29", "url": "https://files.pythonhosted.org/packages/75/0f/437cb95de0422c7ccc417454d5433afb55d2468dbf3770990571d78e53f4/tasa-0.3.0.zip" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "acaeee33640c9399b3f162a99544cd73", "sha256": "45e8f894007748bd415bc908e70883b388fe8281adf4c7ac56eda1e288a48051" }, "downloads": -1, "filename": "tasa-0.3.1.zip", "has_sig": false, "md5_digest": "acaeee33640c9399b3f162a99544cd73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12644, "upload_time": "2014-01-02T23:22:52", "url": "https://files.pythonhosted.org/packages/98/f2/2de214369d5d1374d861160a43dbe446b7ef4295de02a684f5779d42d122/tasa-0.3.1.zip" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "bedf573f62dc59576386f77ecda9a977", "sha256": "71a3d132bfae562896963d1ee6e4be9820fbaf9b36a69b29289a077e87a59e79" }, "downloads": -1, "filename": "tasa-0.3.2.zip", "has_sig": false, "md5_digest": "bedf573f62dc59576386f77ecda9a977", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12731, "upload_time": "2014-01-13T10:35:58", "url": "https://files.pythonhosted.org/packages/d9/9f/bb168d7f893bfe1276dcb322e3bfb5e6bad9008991a99bbac18030b8fdd9/tasa-0.3.2.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bedf573f62dc59576386f77ecda9a977", "sha256": "71a3d132bfae562896963d1ee6e4be9820fbaf9b36a69b29289a077e87a59e79" }, "downloads": -1, "filename": "tasa-0.3.2.zip", "has_sig": false, "md5_digest": "bedf573f62dc59576386f77ecda9a977", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12731, "upload_time": "2014-01-13T10:35:58", "url": "https://files.pythonhosted.org/packages/d9/9f/bb168d7f893bfe1276dcb322e3bfb5e6bad9008991a99bbac18030b8fdd9/tasa-0.3.2.zip" } ] }