{ "info": { "author": "Eric Larson", "author_email": "eric@ionrock.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": "====\nDadd\n====\n\nDadd administers daemons!\n\nDadd is a different kind of process manager. There are many great tools\nlike supervisord and daemontools for managing long running\nprocesses. These tools can be configured to add and remove processes\nas you need to scale. Dadd does something different.\n\nHere is what dadd does:\n\n 1. Start a process on a host in a temporary directory\n 2. Daemonize the process\n 3. On completion of the process, the temporary directory is cleaned\n up\n 4. If something failed, dadd notifies and records the logs\n\nThat is it!\n\nWhy Dadd?\n=========\n\nMany distributed computing platforms rely on each worker being\nreleased with the code that will be run by the worker. `Celery\n`_ is a good example of this\nparadigm. The problem with this style is that it is really easy to\ninterrupt your workers with new releases. Dadd starts the process and\nimmediately daemonizes it so that if a dadd worker gets restarted, the\nwork currently being done is not effected.\n\nDadd also makes each process reasonably atomic. It makes no assumptions\non the host other than having python installed and virtualenv. When a\nprocess is started files can be downloaded and Python dependencies\ninstalled in order to run some code.\n\nDadd is not meant to automatically scale a system or provide stats on\nprocesses. It is meant to *run* a process as a daemon. It is the\nresponsibility of the process to integrate with other systems. Dadd\nexpects the process to exit on its own.\n\n\nDefining Processes\n==================\n\nProcesses are defined via a spec. A spec is just some JSON that\ndefines a couple keys. Here is an example: ::\n\n {\n \"cmd\": \"python -m mypackage\"\n \"download_urls\": [\n \"https://s3.com/mybucket/some_data.json\",\n ],\n \"config\": {\n \"db\": \"postgres://username:pw@dbhost:5432/mydb\",\n },\n \"python_deps\": [\n \"mypackage\"\n ],\n \"python_cheeseshop\": \"http://cheese.mydomain.net\"\n }\n\nWhen you want to run a process, you POST the spec to the dadd master\nserver. It will find a host to run it on and send it along to the\nworker. The worker will then set up a temp directory and allow a `dadd\nrun` process download any files, install a virtualenv along with the\n`python_deps` and run the command.\n\nAny configuration provided in the spec will be written to the\ntemporary directory as JSON. The filename will be available to the\nprocess in the environment via the `APP_SETTINGS_JSON` env var.\n\nIf you need to install packages from a specific cheese shop, you can\nprovide a `python_cheeseshop` in the spec and it will be used when\ninstalling any Python dependencies.\n\n\nDadd Processes\n==============\n\nDadd comes with a command line tool that starts the different dadd\nprocesses.\n\nDadd Master\n-----------\n\nRunning `dadd master` will start the master server. This maintains the\nlist of processes and hosts. When you try to start a process it will\ntry to find a host. If a host is not found, that host will be removed\nfrom the lists of hosts.\n\n\nDadd Worker\n-----------\n\nRun `dadd worker` starts up a worker process. The if a master is\ndefined in the config or environment it will register itself so that\nit can start accepting jobs from the master. This registration happens\nperiodically like a heartbeat in order to keep the workers in sync\nwith the master.\n\n\nDadd Runner\n-----------\n\nThe `dadd run` command runs a process as a deamon and does the build\nprocess prior to running the command. If the master is specified in\nthe config and the spec contains a process ID on the master, it will\nnotify the master of its state as well as upload its log on failure.\n\n\n* Free software: BSD license\n\n.. * Documentation: https://dadd.readthedocs.org.", "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/ionrock/dadd", "keywords": "dadd", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "dadd", "package_url": "https://pypi.org/project/dadd/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/dadd/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/ionrock/dadd" }, "release_url": "https://pypi.org/project/dadd/0.2.4/", "requires_dist": null, "requires_python": null, "summary": "Dadd administers daemons.", "version": "0.2.4" }, "last_serial": 1390163, "releases": { "0.1.10": [ { "comment_text": "", "digests": { "md5": "0d2935a17683d04c9588e85ffef94782", "sha256": "ecb7a4cc40c3ca6fc1098a9ceaab49ecb9d1e4c7784549db7577112edf2109a1" }, "downloads": -1, "filename": "dadd-0.1.10.tar.gz", "has_sig": false, "md5_digest": "0d2935a17683d04c9588e85ffef94782", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13074, "upload_time": "2014-12-19T19:14:48", "url": "https://files.pythonhosted.org/packages/50/03/1c85218b61923656d3e7a658567611d731dc05bdf13b1b9731d0d04f9f9d/dadd-0.1.10.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "dbdf0ecef6ed5f46510074be76678ff7", "sha256": "bf6905b7a56b3d316d8934f1e02e23d4297d7de2c981622f6f180b5b8ee72192" }, "downloads": -1, "filename": "dadd-0.1.12.tar.gz", "has_sig": false, "md5_digest": "dbdf0ecef6ed5f46510074be76678ff7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13277, "upload_time": "2014-12-20T03:11:46", "url": "https://files.pythonhosted.org/packages/b5/5f/bd0af65846d1061a40452d7e3621e2a3b4b93ea2cfd5abd0a2a6276b3838/dadd-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "b9d1daa34b279beb2d334f0f489da803", "sha256": "8a6f57c1512f5242b501718b15082c6542b1ac6c190fe7b7c5812d97694038fe" }, "downloads": -1, "filename": "dadd-0.1.13.tar.gz", "has_sig": false, "md5_digest": "b9d1daa34b279beb2d334f0f489da803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13266, "upload_time": "2014-12-20T03:17:01", "url": "https://files.pythonhosted.org/packages/e1/43/ab89a952f1d3e499487030afeab6960c5d32d486f399fa1c393d239021d0/dadd-0.1.13.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "8583f5216446b67daf2b38805cb593e3", "sha256": "f9c2afd76123beaa5507979d0ad4c07440ca07fc28cbdf374f99157a289f3fde" }, "downloads": -1, "filename": "dadd-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8583f5216446b67daf2b38805cb593e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12829, "upload_time": "2014-11-09T00:04:03", "url": "https://files.pythonhosted.org/packages/39/a6/95a51876ae009cdbcfaabbd2a0a73be01c5b7d74ca25e38bb05b78709880/dadd-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "230c43b4db996be34c0a1dcfecaec373", "sha256": "0db7eec38934541374d1d1686833f53cc837de720882237b25e886a136f34a70" }, "downloads": -1, "filename": "dadd-0.1.4.tar.gz", "has_sig": false, "md5_digest": "230c43b4db996be34c0a1dcfecaec373", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12844, "upload_time": "2014-12-09T20:27:29", "url": "https://files.pythonhosted.org/packages/7a/08/3d6aeb5764211c80dcc6aad4b2076bf2440569796394b61f8790d2dfffaf/dadd-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "6bd20e1720273020facf79b39a3b80a2", "sha256": "03da70f11373997b7e9385b61aee58624722dab85bd7e0d5ac560467af7a4add" }, "downloads": -1, "filename": "dadd-0.2.0.tar.gz", "has_sig": false, "md5_digest": "6bd20e1720273020facf79b39a3b80a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13295, "upload_time": "2015-01-14T17:30:59", "url": "https://files.pythonhosted.org/packages/f7/85/4fbf109d6c6c8669b083be8df9481dffc7e482b5cf90bc3618bc02556a3e/dadd-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c44ef2ee599e270b0bbb1f48dcee559b", "sha256": "3061d28db8b886a917be758b7136cd5aed0f59ee8794d44b31595eeff89fb99b" }, "downloads": -1, "filename": "dadd-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c44ef2ee599e270b0bbb1f48dcee559b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13287, "upload_time": "2015-01-14T21:07:23", "url": "https://files.pythonhosted.org/packages/c4/ba/5f8a00535cc7f68c905ce4f192fd659f9968ba89c7893d7dbb51533f99ea/dadd-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "c8cc4a98549bf32d3123f3c353ec4290", "sha256": "23e04aad0c2fa86c21a17ba1e227175adae6529b8eac5896ffdcb7d8db580fe3" }, "downloads": -1, "filename": "dadd-0.2.2.tar.gz", "has_sig": false, "md5_digest": "c8cc4a98549bf32d3123f3c353ec4290", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13287, "upload_time": "2015-01-15T16:07:57", "url": "https://files.pythonhosted.org/packages/6a/21/16f43d40376568eb68a1ea462085b4319b9380b10067a3a10dd00568ee95/dadd-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "cd7d42468a8626dae15043267ab44ada", "sha256": "0bed4c8b33d39cf46bee9611beba580e6d8cd4f69e408ad48da0e3b5bb31b400" }, "downloads": -1, "filename": "dadd-0.2.3.tar.gz", "has_sig": false, "md5_digest": "cd7d42468a8626dae15043267ab44ada", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13285, "upload_time": "2015-01-16T00:37:10", "url": "https://files.pythonhosted.org/packages/35/42/9a7c7a940bb54fe459a41b4f5a5fe2a0b94001a4f4254a0bf524be13e42e/dadd-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "50795e82765cf75375df881616ec8bc2", "sha256": "17914a88aa66f8081a43b663bc0ef7e1b0a0e55e55212b11ff3f45b8a7d1108d" }, "downloads": -1, "filename": "dadd-0.2.4.tar.gz", "has_sig": false, "md5_digest": "50795e82765cf75375df881616ec8bc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13296, "upload_time": "2015-01-21T04:37:57", "url": "https://files.pythonhosted.org/packages/28/97/5c3a885d6bea5e97187c6a3b267c98a83fd5028329a32a662b5f19fc90e6/dadd-0.2.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "50795e82765cf75375df881616ec8bc2", "sha256": "17914a88aa66f8081a43b663bc0ef7e1b0a0e55e55212b11ff3f45b8a7d1108d" }, "downloads": -1, "filename": "dadd-0.2.4.tar.gz", "has_sig": false, "md5_digest": "50795e82765cf75375df881616ec8bc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13296, "upload_time": "2015-01-21T04:37:57", "url": "https://files.pythonhosted.org/packages/28/97/5c3a885d6bea5e97187c6a3b267c98a83fd5028329a32a662b5f19fc90e6/dadd-0.2.4.tar.gz" } ] }