{ "info": { "author": "Upserve", "author_email": "datascience@upserve.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "SQS Task Master for Python\n==================================\n\n.. image:: https://travis-ci.org/Automatic/taskhawk-python.svg?branch=master\n :target: https://travis-ci.org/upserve/sqstaskmaster\n\n.. image:: https://img.shields.io/pypi/v/sqstaskmaster.svg?style=flat-square\n :target: https://pypi.python.org/pypi/sqstaskmaster\n\n.. image:: https://img.shields.io/pypi/pyversions/sqstaskmaster.svg?style=flat-square\n :target: https://pypi.python.org/pypi/sqstaskmaster\n\n.. image:: https://img.shields.io/pypi/implementation/sqstaskmaster.svg?style=flat-square\n :target: https://pypi.python.org/pypi/sqstaskmaster\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/upserve/sqstaskmaster\n\n\n**SQS Task Master** is one of many packages for distributed asynchronous task execution in python.\nThis package is different in that it is designed to work with uncooperative tasks.\nIt is designed for CPU intensive tasks which will not work in a python cooperative threading model.\nIt allows for tasks that may take upto 12 hours (the limit for SQS).\nIt also provides for applying a hard timeout for a task, less than 12 hours.\nThe implementation relies on using os Singals to achieve these behaviors.\nRetries and failures are handled using SQS infrastructure.\nIt is designed to work with standard SQS queues which guarantee at least once delivery.\n\nUpserve developed this library for use with long running data science tools like\n`xgBoost `_ and\n`OrTools `_.\nWhile python `signal `_\nwill attempt to interrupt the process, you should verify the desired behavior.\nThis behavior and shortcomings with c libraries is documented in TestMessageHandler.test_cbusy_timeout.\n\n\nOther choices:\n - https://github.com/Automatic/taskhawk-python\n - https://github.com/mardix/sqs-task\n - https://github.com/celery/celery\n\nInstallation\n************\n\nThe sqstaskmaster project is public and can be installed from pypi with pip for python3 on mac and linux.\n\n::\n\n pip install sqstaskmaster\n\nUsage\n*****\n\nPublish Tasks\n::\n\n TODO\n\n\nConsume Tasks\n::\n\n for task, kwargs, message in TaskManager(sqs_url).task_generator(sqs_timeout=30):\n if task == 'MyTask':\n with MyHandler(message, sqs_timeout=30, alarm_timeout=25, hard_timeout=300, **kwargs) as handler:\n handler.run()\n elif task == 'MyOtherTask':\n with MyOtherHandler(message, sqs_timeout=30, alarm_timeout=25, hard_timeout=300, **kwargs) as handler:\n handler.run()\n else:\n # Do something about unexpected task request\n\n\nDevelopment\n***********\n\nGit clone the respository:\n::\n\n git clone git@github.com:upserve/sqstaskmaster.git\n\nPip install the development dependencies in a `virtual environment `_:\n::\n\n pip install -e .[dev]\n\nRun unit tests:\n::\n\n python -m unittest -v\n\nRun flake8:\n::\n\n flake8 .\n\nRun black:\n::\n\n black .", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/upserve/sqstaskmaster", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "sqstaskmaster", "package_url": "https://pypi.org/project/sqstaskmaster/", "platform": "", "project_url": "https://pypi.org/project/sqstaskmaster/", "project_urls": { "Homepage": "https://github.com/upserve/sqstaskmaster" }, "release_url": "https://pypi.org/project/sqstaskmaster/0.0.8/", "requires_dist": null, "requires_python": "~=3.7", "summary": "SQS Task Master for unwieldy python data processing by Upserve", "version": "0.0.8" }, "last_serial": 5993184, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "df5828a5f3241f6e43ad8f55582e7ca3", "sha256": "d4ed0a0f24619a246cf33d1815ed1bef454a2f618abe28386ea7fb873ffa2569" }, "downloads": -1, "filename": "sqstaskmaster-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "df5828a5f3241f6e43ad8f55582e7ca3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.7", "size": 9833, "upload_time": "2019-08-23T13:38:05", "url": "https://files.pythonhosted.org/packages/f5/00/fa59f8d3d34b3afdec2b532d894834339f1440fd9540384c7f4e520e418a/sqstaskmaster-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "efcbeb8858a564773bbaf04c6ab67638", "sha256": "bec68a1abafba619d0c89faee4429d5e94211fe06747bc8ec8c3a2d6ef77e2c9" }, "downloads": -1, "filename": "sqstaskmaster-0.0.1.tar.gz", "has_sig": false, "md5_digest": "efcbeb8858a564773bbaf04c6ab67638", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.7", "size": 7595, "upload_time": "2019-08-23T13:38:07", "url": "https://files.pythonhosted.org/packages/63/af/03ab199cf76ba0fe7750a00877679e94d925409482917ef8d374ce927c3f/sqstaskmaster-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "1d888065269842cebc483fd955ceb8b7", "sha256": "43d9e489835fa80a18c3ed2613cdaff448d15bb7105a341a9ada54f08b36a300" }, "downloads": -1, "filename": "sqstaskmaster-0.0.2.tar.gz", "has_sig": false, "md5_digest": "1d888065269842cebc483fd955ceb8b7", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.7", "size": 8067, "upload_time": "2019-08-23T15:01:14", "url": "https://files.pythonhosted.org/packages/4c/bf/0c9cf744f89dc381af91ccf4efea9d357eb9d9305487c75fc1e5e05b1a07/sqstaskmaster-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "6c31f63dd9d7e6715ab5d56a6899326a", "sha256": "9fcbbc289c3061c345fc0bd49c372118c9ce6c657e0e24224515719c45cea36e" }, "downloads": -1, "filename": "sqstaskmaster-0.0.3.tar.gz", "has_sig": false, "md5_digest": "6c31f63dd9d7e6715ab5d56a6899326a", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.7", "size": 9001, "upload_time": "2019-08-26T15:03:25", "url": "https://files.pythonhosted.org/packages/6d/e7/fea4fdae92e7b7eb3c3640c152033362d86ac4518bf6aaa2d1ab8323876f/sqstaskmaster-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "084eaec3a9d7128547973635d8426992", "sha256": "af618f76dcc976d04c4e9102467295ec4d0fbbbe0a365b08ba21dc31d79f5be7" }, "downloads": -1, "filename": "sqstaskmaster-0.0.4.tar.gz", "has_sig": false, "md5_digest": "084eaec3a9d7128547973635d8426992", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.7", "size": 9006, "upload_time": "2019-08-27T19:57:11", "url": "https://files.pythonhosted.org/packages/68/d7/13d35c0e2bf08824b7aa3360b9f6201089c4f8b04a822e4945e97c8e18ab/sqstaskmaster-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "ca960ac13efd28732582166892d90727", "sha256": "7db5917c40f58c67a14e82088c1bfcf8f6144a8090b312939339a3eaaa8f383b" }, "downloads": -1, "filename": "sqstaskmaster-0.0.5.tar.gz", "has_sig": false, "md5_digest": "ca960ac13efd28732582166892d90727", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.7", "size": 10617, "upload_time": "2019-08-28T16:29:56", "url": "https://files.pythonhosted.org/packages/4c/2a/64a33d987ec8a466e01b228665db7d038ca3e69cd1be56589d001d6453fb/sqstaskmaster-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "c23dba9e7aa644e9493dd29fa393cd3f", "sha256": "54dc85f93cc06f0cea97427bf6c7716a7640700f3eb9d9771abe44ddb40ea122" }, "downloads": -1, "filename": "sqstaskmaster-0.0.6.tar.gz", "has_sig": false, "md5_digest": "c23dba9e7aa644e9493dd29fa393cd3f", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.7", "size": 10624, "upload_time": "2019-10-14T19:48:16", "url": "https://files.pythonhosted.org/packages/b7/cb/bc91651b6fdf497c4a11624f0894672aca02c905648aa50c58796855288e/sqstaskmaster-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "e8df99297af56ed78d3957eb08d11da4", "sha256": "5b41c86447ef51b7ec83cdab4684dd08dd5389b122f363f07235673449fbeec2" }, "downloads": -1, "filename": "sqstaskmaster-0.0.7.tar.gz", "has_sig": false, "md5_digest": "e8df99297af56ed78d3957eb08d11da4", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.7", "size": 10622, "upload_time": "2019-10-14T20:20:22", "url": "https://files.pythonhosted.org/packages/37/c7/bd16dac8262bd95da34ded834d68f2a0ec9ef7bacd7ea28dbb0550cef2c5/sqstaskmaster-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "5d0277538acae133e38702481dbc6fa6", "sha256": "f9d89151b19654ff204eaff4472c2fa95a193906edca1cb58b88fb7486caec7a" }, "downloads": -1, "filename": "sqstaskmaster-0.0.8.tar.gz", "has_sig": false, "md5_digest": "5d0277538acae133e38702481dbc6fa6", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.7", "size": 10614, "upload_time": "2019-10-18T01:17:42", "url": "https://files.pythonhosted.org/packages/6f/a8/96ae213b98b86652e025c4dbba41bc07763f7e64445eb2f2197a04082ffd/sqstaskmaster-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5d0277538acae133e38702481dbc6fa6", "sha256": "f9d89151b19654ff204eaff4472c2fa95a193906edca1cb58b88fb7486caec7a" }, "downloads": -1, "filename": "sqstaskmaster-0.0.8.tar.gz", "has_sig": false, "md5_digest": "5d0277538acae133e38702481dbc6fa6", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.7", "size": 10614, "upload_time": "2019-10-18T01:17:42", "url": "https://files.pythonhosted.org/packages/6f/a8/96ae213b98b86652e025c4dbba41bc07763f7e64445eb2f2197a04082ffd/sqstaskmaster-0.0.8.tar.gz" } ] }