{ "info": { "author": "Hudl", "author_email": "alex.debrie@hudl.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "## Luigi Monitor\n\n[![Pypi Latest Version](https://img.shields.io/pypi/v/luigi-monitor.svg)](https://img.shields.io/pypi/v/luigi-monitor.svg)\n[![License](https://img.shields.io/pypi/l/luigi-monitor.svg)](https://img.shields.io/pypi/l/luigi-monitor.svg)\n[![Python Versions](https://img.shields.io/pypi/pyversions/luigi-monitor.svg)](https://img.shields.io/pypi/pyversions/luigi-monitor.svg)\n[![Pypi Format](https://img.shields.io/pypi/format/luigi-monitor.svg)](https://img.shields.io/pypi/format/luigi-monitor.svg)\n[![Build Status](https://travis-ci.org/hudl/luigi-monitor.svg?branch=master)](https://travis-ci.org/hudl/luigi-monitor)\n\n\n![message](https://raw.github.com/hudl/luigi-monitor/master/message.png)\n\nSend summary messages of your Luigi jobs to Slack.\n\n### Overview\n\n[Luigi](https://github.com/spotify/luigi) is a great tool for making\njob pipelines, but it's hard to know the status of a run. Luigi has\nsupport for error emails, but this requires configuring your machine\nto send email, which is a hassle for short-lived EMR clusters. Further,\nit sends an email for every failure, which can quickly swamp your inbox.\n\nBy contrast, this tool gathers all your failures and missing dependencies\nand sends a summary Slack message when the job is finished.\n\n### Usage\n\nWith default app username:\n```python\nimport luigi\nfrom luigi_monitor import monitor\n\n...\n\nif __name__ == \"__main__\":\n with monitor(slack_url=, max_print=10):\n luigi.run(main_task_cls=MainClass)\n\n```\n\nWith dynamic app username:\n```python\nimport luigi\nfrom luigi_monitor import monitor\n\n...\n\nif __name__ == \"__main__\":\n with monitor(slack_url=, max_print=10, username=\"FooBar Monitor\"):\n luigi.run(main_task_cls=MainClass)\n\n```\n\nMonitoring and notifying on various events:\n\nCurrently supports: `SUCCESS`, `DEPENDENCY_MISSING`, and `FAILURE` \n\nBy default, all three of the above are monitored and notified on. If, `SUCCESS` event is monitored and \nall tasks succeed then the notification text is \"Job ran successfully\" instead of listing _all_ \nsuccessful tasks. \n\n```python\nimport luigi\nfrom luigi_monitor import monitor\n\n...\n\nif __name__ == \"__main__\":\n with monitor(slack_url=, events=['DEPENDENCY_MISSING', 'FAILURE']):\n luigi.run(main_task_cls=MainClass)\n```\n\nAlternatively:\n\n`luigi-monitor --module path.to.module TaskName`\n\nNB: if you plan to use luigi-monitor from the command line, set options using `luigi.cfg`:\n```\n[luigi-monitor]\nslack_url=\nmax_print=\nusername=\n```\n\n\nThis is a work in progress. Particularly, note that:\n\n* It only sends notifications via Slack\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/hudl/luigi-monitor", "keywords": "luigi", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "luigi-monitor", "package_url": "https://pypi.org/project/luigi-monitor/", "platform": "", "project_url": "https://pypi.org/project/luigi-monitor/", "project_urls": { "Homepage": "https://github.com/hudl/luigi-monitor" }, "release_url": "https://pypi.org/project/luigi-monitor/1.1.4/", "requires_dist": null, "requires_python": "", "summary": "Send summary messages of your Luigi jobs to Slack.", "version": "1.1.4" }, "last_serial": 4176878, "releases": { "0.1.0": [], "0.2.0": [ { "comment_text": "", "digests": { "md5": "6183d60371fc0ae1305cf94a03e960f0", "sha256": "b5508f450f16c62d0b93b84b38139839324de647c59e603e67d3c77039739102" }, "downloads": -1, "filename": "luigi_monitor-0.2.0-cp27-none-macosx_10_10_x86_64.whl", "has_sig": false, "md5_digest": "6183d60371fc0ae1305cf94a03e960f0", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 2369, "upload_time": "2015-09-29T17:53:21", "url": "https://files.pythonhosted.org/packages/8f/1b/eb6e24c8556c109d47f58f2f34e9a5040c53d5ad04d26f6f5194a279c9ae/luigi_monitor-0.2.0-cp27-none-macosx_10_10_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "78f76ca7e302baea97354b5dc61caa1c", "sha256": "dfedfcff6b6b37ccec2fd696531262d186638bf520b36920fd0c249ddb4c71fe" }, "downloads": -1, "filename": "luigi-monitor-0.2.0.tar.gz", "has_sig": false, "md5_digest": "78f76ca7e302baea97354b5dc61caa1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1050, "upload_time": "2015-09-29T17:53:24", "url": "https://files.pythonhosted.org/packages/f8/1c/eb615ccdd7c3b30320c3115bf675f000017304b6fb754bb4f91be0853983/luigi-monitor-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "611c53a379e23230af28ec9ad05c71a3", "sha256": "acd82d6bbff554a800a1125c35131e45f3c2b2dfe6b1d475a076012194e6e876" }, "downloads": -1, "filename": "luigi_monitor-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "611c53a379e23230af28ec9ad05c71a3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 3587, "upload_time": "2015-09-29T18:28:48", "url": "https://files.pythonhosted.org/packages/e1/34/bfb48f40aa585b19eb8d396ec38fb0ed9470f2922b8551b0f0f9dd577bd8/luigi_monitor-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc761c9ca787ab2008ffe806ca0e0310", "sha256": "42d1281da20d399f734a5b7103cf8c6861c176a7203ea4794a16ad1463e53a78" }, "downloads": -1, "filename": "luigi_monitor-0.2.1.tar.gz", "has_sig": false, "md5_digest": "bc761c9ca787ab2008ffe806ca0e0310", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2134, "upload_time": "2015-09-29T18:28:51", "url": "https://files.pythonhosted.org/packages/e2/b5/6dd8ea2a39a0be5bd51a427091f563b200b835ced588551d5eac70e870c7/luigi_monitor-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "23d9cb675a321e2241d7518c3549043c", "sha256": "c68f32c8e5f86e0a2f3c2fb10e10789cb3449907abdc09bfec05bf43ae10c015" }, "downloads": -1, "filename": "luigi_monitor-0.2.2-py2-none-any.whl", "has_sig": false, "md5_digest": "23d9cb675a321e2241d7518c3549043c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 3635, "upload_time": "2015-10-20T23:53:14", "url": "https://files.pythonhosted.org/packages/bc/c8/ed196e38a9f01fedeecd4c38916a4f8f89cf1110d10da21d946da7603741/luigi_monitor-0.2.2-py2-none-any.whl" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "30f8dd99d6a37a5f30c04ef8588f78b3", "sha256": "309df9897b2a87e344b0ec223d2bb24602d444a671bbbacd273adb98d62f7349" }, "downloads": -1, "filename": "luigi_monitor-0.2.3-py2-none-any.whl", "has_sig": false, "md5_digest": "30f8dd99d6a37a5f30c04ef8588f78b3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 3636, "upload_time": "2015-10-21T15:58:54", "url": "https://files.pythonhosted.org/packages/d7/e8/471f1a6f6da6e85011f691512a69f0514bcaa13fa28d5bfef99e739ed06d/luigi_monitor-0.2.3-py2-none-any.whl" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "81c12d5c4d317a59d8ba90c15a68b4f0", "sha256": "1ef0e6d9d1dc8b297543e13b187fc7688ef6eb430f39b85efbd7c90ce14caa41" }, "downloads": -1, "filename": "luigi_monitor-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "81c12d5c4d317a59d8ba90c15a68b4f0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4164, "upload_time": "2016-09-07T19:44:15", "url": "https://files.pythonhosted.org/packages/05/ea/569d4e63a26ba40d66d1e5a53886d784e8e3d9cf10f468416f3d9cd8898f/luigi_monitor-1.0.0-py2-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "2e76559fcc3b558d81d66125c63fbcbb", "sha256": "8ced4a644f111dd5c62905f0c2a97662204a685e88c58af18064a07452f18190" }, "downloads": -1, "filename": "luigi_monitor-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "2e76559fcc3b558d81d66125c63fbcbb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4163, "upload_time": "2016-09-08T11:16:27", "url": "https://files.pythonhosted.org/packages/bf/ba/abcd084af489a57d0fbb5a2d0962b125a239d995b6c47ac812be6eef44db/luigi_monitor-1.0.1-py2-none-any.whl" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "8780c1766d86727ca56461ccc2b090f4", "sha256": "756a5347fe45e0e3858ec8db2fb937185c32905ee8a420d6ac651abd3b9157cf" }, "downloads": -1, "filename": "luigi_monitor-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "8780c1766d86727ca56461ccc2b090f4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5838, "upload_time": "2017-12-15T17:25:27", "url": "https://files.pythonhosted.org/packages/3d/47/ac9e8c8c7c3ee2cce948fd44933cd5cb58e87281010f1bcdc128efb3387a/luigi_monitor-1.0.2-py2-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "399d37885929cb73d3b6278740548753", "sha256": "6454aeb66756d91f73a905fbc9323885fab18e933039c350bd4ed624b44267ea" }, "downloads": -1, "filename": "luigi_monitor-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "399d37885929cb73d3b6278740548753", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6455, "upload_time": "2018-01-04T10:37:48", "url": "https://files.pythonhosted.org/packages/4c/9d/94269b42370a104788597c9507493708b6151cf34881cd4ec7e67dc6292e/luigi_monitor-1.1.0-py2-none-any.whl" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "f907a24b91df10a23d5830f08e014297", "sha256": "ea14714adc95783e6a2f92655b4eab2a9a814c0520e1616a19f201750d011c2c" }, "downloads": -1, "filename": "luigi_monitor-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "f907a24b91df10a23d5830f08e014297", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6578, "upload_time": "2018-01-31T15:11:19", "url": "https://files.pythonhosted.org/packages/9d/0d/0575eb0f16f45bb644b9f1cb117cac132991856e9f02015dd0b9402b8939/luigi_monitor-1.1.1-py2-none-any.whl" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "cea3da735b4adb8d3a0654b757cc4347", "sha256": "fa4a0f1519aa010734e0398849cc319d01b13104bf813d0273bdacd65e3a8150" }, "downloads": -1, "filename": "luigi_monitor-1.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "cea3da735b4adb8d3a0654b757cc4347", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6584, "upload_time": "2018-02-21T11:41:08", "url": "https://files.pythonhosted.org/packages/82/e1/4435e8adeb00098c88894ad20191fae63c66558e730727c4d547ce70a4c5/luigi_monitor-1.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78e183730149df93db90187ea15d5707", "sha256": "ab8bec686edcbb5de3516ac96dc66150054a8f04863cb118823188d192271d3a" }, "downloads": -1, "filename": "luigi-monitor-1.1.2.tar.gz", "has_sig": false, "md5_digest": "78e183730149df93db90187ea15d5707", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4007, "upload_time": "2018-02-21T11:41:06", "url": "https://files.pythonhosted.org/packages/6f/18/18346a86a624b46662accd9b958b8fbfd22960d43640150fdd445b67dc32/luigi-monitor-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "af33062a3ea8db941fc8c556908856bf", "sha256": "001657d7e175ad5915809fe138bb8b6b5f5f44f5496b82828ecccf9de79d692a" }, "downloads": -1, "filename": "luigi_monitor-1.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "af33062a3ea8db941fc8c556908856bf", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7065, "upload_time": "2018-08-13T14:02:26", "url": "https://files.pythonhosted.org/packages/a8/93/80230067c60e6c1417538fad47ef16b3089e2dd2e60872fdea819b7dc07d/luigi_monitor-1.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1cfa477d7176677cd39ed074f53a7ce", "sha256": "6ac13ea55585e7582acd94af2f3b84498ca32558df28e54cec5cdac669d051dc" }, "downloads": -1, "filename": "luigi-monitor-1.1.3.tar.gz", "has_sig": false, "md5_digest": "b1cfa477d7176677cd39ed074f53a7ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4561, "upload_time": "2018-08-13T14:02:25", "url": "https://files.pythonhosted.org/packages/c0/58/998dfe05642bb4ed8a840ef148d3e1af80647f84a0e1486141dd5cf6979a/luigi-monitor-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "9961913090f9438458f71d10c1136e2b", "sha256": "3dad3b2e9a67c9edffa7234e9d28631d680b009bf4f68e4971737c829477ee53" }, "downloads": -1, "filename": "luigi_monitor-1.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9961913090f9438458f71d10c1136e2b", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7030, "upload_time": "2018-08-16T14:41:39", "url": "https://files.pythonhosted.org/packages/c3/03/a4355514559a00a36370dc29358214049daa6cd9dc968e34db8274b227ce/luigi_monitor-1.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b86467e678b10706774d4c8c85dfdadd", "sha256": "111661fc9771f7da5404d16d1415f2fe75d9b65ca7c926fe4b718218d35aae77" }, "downloads": -1, "filename": "luigi-monitor-1.1.4.tar.gz", "has_sig": false, "md5_digest": "b86467e678b10706774d4c8c85dfdadd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4303, "upload_time": "2018-08-16T14:41:37", "url": "https://files.pythonhosted.org/packages/61/a4/b170904b6a9a5c49a39231c582bd7bed3692ed4326542f6319437803b427/luigi-monitor-1.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9961913090f9438458f71d10c1136e2b", "sha256": "3dad3b2e9a67c9edffa7234e9d28631d680b009bf4f68e4971737c829477ee53" }, "downloads": -1, "filename": "luigi_monitor-1.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9961913090f9438458f71d10c1136e2b", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7030, "upload_time": "2018-08-16T14:41:39", "url": "https://files.pythonhosted.org/packages/c3/03/a4355514559a00a36370dc29358214049daa6cd9dc968e34db8274b227ce/luigi_monitor-1.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b86467e678b10706774d4c8c85dfdadd", "sha256": "111661fc9771f7da5404d16d1415f2fe75d9b65ca7c926fe4b718218d35aae77" }, "downloads": -1, "filename": "luigi-monitor-1.1.4.tar.gz", "has_sig": false, "md5_digest": "b86467e678b10706774d4c8c85dfdadd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4303, "upload_time": "2018-08-16T14:41:37", "url": "https://files.pythonhosted.org/packages/61/a4/b170904b6a9a5c49a39231c582bd7bed3692ed4326542f6319437803b427/luigi-monitor-1.1.4.tar.gz" } ] }