{ "info": { "author": "Mikhail Trifonov", "author_email": "mikhail.trifonov@corp.mail.ru", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Testing" ], "description": "\n============\nInstallation\n============\n\n::\n\n pip install noseapp_daemon\n\n\n=============\nCreate Runner\n=============\n\n::\n\n from noseapp.ext.daemon import DaemonRunner\n\n class MyPythonDaemon(DaemonRunner):\n\n CMD_PREFIX = 'python'\n DAEMON_BIN = '/path/to/daemon/daemon.py'\n\n\n my_daemon = MyPythonDaemon('my_daemon')\n my_daemon.add_cmd_option('-c', '/path/to/config')\n my_daemon.start()\n\n\n====================\nCreate daemon plugin\n====================\n\n::\n\n from noseapp.ext.daemon import DaemonPlugin\n\n\n class MyPythonDaemonPlugin(DaemonPlugin):\n\n def init(self, daemon):\n # do something\n\n def before_start(self, daemon):\n # do something\n\n def after_start(self, daemon):\n # do something\n\n def before_stop(self, daemon):\n # do something\n\n def after_stop(self, daemon):\n # do something\n\n\n my_daemon = MyPythonDaemon('my_daemon', plugin=MyPythonDaemonPlugin())\n\n\n==============\nCreate Service\n==============\n\n::\n\n from noseapp.ext.daemon import DaemonService\n\n class MyDaemonService(DaemonService):\n\n name = 'my_service'\n\n def setup(self):\n self.daemon = MyPythonDaemon('my_daemon')\n\n def start(self):\n self.daemon.start()\n\n def stop(self):\n self.daemon.stop()\n\n ...\n\n\n service = MyDaemonService()\n service.start()\n service.restart()\n\n\n=================\nCreate Management\n=================\n\n::\n\n from noseapp.ext.daemon import DaemonManagement\n\n management = DaemonManagement(app)\n management.add_daemon(\n MyPythonDaemon('my_daemon', plugin=MyPythonDaemonPlugin()),\n )\n daemon = management.daemon('my_daemon')\n\n def error_handler(daemon, e):\n # do something\n\n with management.checkout_daemon('my_daemon', except_exc=Exception, error_handler=error_handler) as daemon:\n daemon.restart()\n\n management.add_service(MyDaemonService())\n service = management.service('my_service')\n\n # to install as extension\n management.install(app)\n\n suite = Suite(__name__, require=['my_daemon'])\n\n # management.stop_all()\n # management.stop_daemons()\n # management.stop_services()\n # management.restart_all()\n # etc ...\n\n\n=======\nPresets\n=======\n\n::\n\n noseapp.ext.daemon.presets import NGINXDaemon\n noseapp.ext.daemon.presets import UWSGIDaemon\n ...\n\n\n nginx = NGINXDaemon()\n uwsgi = UWSGIDaemon()\n\n nginx.add_cmd_option('-c', '/path/to/config')\n uwsgi.add_dmd_option('--ini', '/path/to/config')\n\n nginx.start()\n uwsgi.start()\n ...\n", "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/trifonovmixail/noseapp_daemon", "keywords": null, "license": "GNU LGPL", "maintainer": null, "maintainer_email": null, "name": "noseapp_daemon", "package_url": "https://pypi.org/project/noseapp_daemon/", "platform": "linux", "project_url": "https://pypi.org/project/noseapp_daemon/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/trifonovmixail/noseapp_daemon" }, "release_url": "https://pypi.org/project/noseapp_daemon/2.3.0/", "requires_dist": null, "requires_python": null, "summary": "noseapp extension for linux daemon testing", "version": "2.3.0" }, "last_serial": 1692924, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "1c8e4adb2379a3db6c676ccdee697a1d", "sha256": "fbc83833b8981f28b4bdc786817076d759128ec3ef2be5a54bc6c0a1ceacec90" }, "downloads": -1, "filename": "noseapp_daemon-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1c8e4adb2379a3db6c676ccdee697a1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4047, "upload_time": "2015-03-17T11:54:42", "url": "https://files.pythonhosted.org/packages/ab/c1/4f21a2f556a818d567dac325449afd4a963acbc2ebc206cac30508321b40/noseapp_daemon-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "987df709c53943805544334351e404bf", "sha256": "a618321f9d45f847c06480443c26abe03f1829d20f97e638288ac74e1c5632a3" }, "downloads": -1, "filename": "noseapp_daemon-1.0.1.tar.gz", "has_sig": false, "md5_digest": "987df709c53943805544334351e404bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4182, "upload_time": "2015-03-17T12:05:10", "url": "https://files.pythonhosted.org/packages/15/d0/17c0eecdc988671f8297006b3069f8ffa11e2ae63aa275ac90f4d022e8df/noseapp_daemon-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3878736fae2beff4ac534f9b99fe7461", "sha256": "d702142bfded9b6d6186457a6c541adb565df685d38357c8cdff04e331a59af9" }, "downloads": -1, "filename": "noseapp_daemon-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3878736fae2beff4ac534f9b99fe7461", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4186, "upload_time": "2015-03-20T19:04:58", "url": "https://files.pythonhosted.org/packages/3f/7b/7aa67317fe1a1b6552f731eca2b1c504a8f56e97e406a61f7c58afde7b5b/noseapp_daemon-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "64d231c220d44ec556ff2d011d8d8587", "sha256": "201c39ea0c9f4d12c6edf8b8372219662f01431820735cc3d81a739dc483084a" }, "downloads": -1, "filename": "noseapp_daemon-1.0.3.tar.gz", "has_sig": false, "md5_digest": "64d231c220d44ec556ff2d011d8d8587", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4203, "upload_time": "2015-03-23T11:35:06", "url": "https://files.pythonhosted.org/packages/31/fe/6153f97ceec5ab273dca793855f8ac3a8a7dcdbe5a925986fceac665cf02/noseapp_daemon-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "c85eb76fc45301338339d371d435d315", "sha256": "1c2f729edf668d73c3379b62efde85aef89dc1c308cea01b4a9e813e80e9695e" }, "downloads": -1, "filename": "noseapp_daemon-1.0.4.tar.gz", "has_sig": false, "md5_digest": "c85eb76fc45301338339d371d435d315", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4144, "upload_time": "2015-03-23T11:58:42", "url": "https://files.pythonhosted.org/packages/59/fe/91ecd7e258d079c81dbffa86b9470cce2ae53235308578302dd39ead807c/noseapp_daemon-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "8cb1e17ae9f0b687f43bd9e4a9db94e3", "sha256": "0dbf472dc35242a52c4654d36b373c165d92adb7fbdc9e1ce67a730917e5031c" }, "downloads": -1, "filename": "noseapp_daemon-1.0.5.tar.gz", "has_sig": false, "md5_digest": "8cb1e17ae9f0b687f43bd9e4a9db94e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4125, "upload_time": "2015-03-23T12:17:23", "url": "https://files.pythonhosted.org/packages/78/ea/513d0457cc78dc4ed2a08aaa9290ee757eac74b91f6990d5c39a743cd0b2/noseapp_daemon-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "4ce79d46f35a04a9e8290c7d168b4ff4", "sha256": "be26bada5a838ecc4125f4d31f8bc0108246db6c8b1869efac4be251c372fdcd" }, "downloads": -1, "filename": "noseapp_daemon-1.0.6.tar.gz", "has_sig": false, "md5_digest": "4ce79d46f35a04a9e8290c7d168b4ff4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4188, "upload_time": "2015-04-30T17:04:22", "url": "https://files.pythonhosted.org/packages/72/a6/d1aa91086fbe901aafd02ceb2b59014162c66b98810a24f47c450990626b/noseapp_daemon-1.0.6.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "f5e92d2568d5e76d00f315177c259864", "sha256": "50905d3f5cc69709f339b4c0919e04b66d9e897013524fa3f9fe865ec5068488" }, "downloads": -1, "filename": "noseapp_daemon-1.1.0.tar.gz", "has_sig": false, "md5_digest": "f5e92d2568d5e76d00f315177c259864", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4216, "upload_time": "2015-05-20T13:47:29", "url": "https://files.pythonhosted.org/packages/72/50/18e511ea8556df75c7a5fa1d098386d66415a4b71a238c46dc4bfb52b5fc/noseapp_daemon-1.1.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "78ce560868f972e65b6544c1ee88e174", "sha256": "bd19f33e4cae66b644c2b76b45968df81817532790c49741262345593b9c0578" }, "downloads": -1, "filename": "noseapp_daemon-2.0.0.tar.gz", "has_sig": false, "md5_digest": "78ce560868f972e65b6544c1ee88e174", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7404, "upload_time": "2015-08-07T12:54:08", "url": "https://files.pythonhosted.org/packages/52/f4/9ebd6d3a7f203201fb4c70a6e1d9a9347e594fa36924a9feae9c1435caff/noseapp_daemon-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "cb894c6c1102705d8ff819c4c0c43efe", "sha256": "344467dee61fc3336fa54800c9f6a42a76e7e76a577e042e9f7b26a1fc893dd7" }, "downloads": -1, "filename": "noseapp_daemon-2.1.0.tar.gz", "has_sig": false, "md5_digest": "cb894c6c1102705d8ff819c4c0c43efe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7428, "upload_time": "2015-08-07T14:22:21", "url": "https://files.pythonhosted.org/packages/a8/15/a22c2f65c86e4ead3430d6141fe854212359e3072a8c87ebafd6f1d4c5ec/noseapp_daemon-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "c31edbe8c7bd7f5da96ec16128575905", "sha256": "03e3693ac798b12aa549a4878b99dea54d1ca8835626c9bce8fa4da69ef2e1d5" }, "downloads": -1, "filename": "noseapp_daemon-2.2.0.tar.gz", "has_sig": false, "md5_digest": "c31edbe8c7bd7f5da96ec16128575905", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7580, "upload_time": "2015-08-07T15:01:41", "url": "https://files.pythonhosted.org/packages/f7/6b/7dba4cd6018d8b687c1123a1d03910b529ebb14704b27360d95b4ebe783c/noseapp_daemon-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "ac3d7aafde876210040c6aa2c05e163e", "sha256": "8dbc21bfa73e2da51d232c82d02a82cc988090d199523ab250d3248fbe4e8842" }, "downloads": -1, "filename": "noseapp_daemon-2.2.1.tar.gz", "has_sig": false, "md5_digest": "ac3d7aafde876210040c6aa2c05e163e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7693, "upload_time": "2015-08-21T14:17:41", "url": "https://files.pythonhosted.org/packages/bc/c9/0b5f6463e17976488e1187db5f04dc0ddce1cd15de6840abc8e00cd69658/noseapp_daemon-2.2.1.tar.gz" } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "7ae8e0ed96c2c6e9f2e0789bc5397e76", "sha256": "cbd4acac29a85349c92e4f9ca18ea322c065479210ba22a0ef6f93d5e86c3896" }, "downloads": -1, "filename": "noseapp_daemon-2.2.2.tar.gz", "has_sig": false, "md5_digest": "7ae8e0ed96c2c6e9f2e0789bc5397e76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7697, "upload_time": "2015-08-25T13:40:11", "url": "https://files.pythonhosted.org/packages/a8/92/13efd3224a35e70fd0d2451754b21206d3913004c578e6bfe9c613460258/noseapp_daemon-2.2.2.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "0df2bd45bd6bdc799053787a3cf6d34e", "sha256": "b56864e3c7511c366329b34e72e9551d996f0baab942938c0374667187519ccd" }, "downloads": -1, "filename": "noseapp_daemon-2.3.0.tar.gz", "has_sig": false, "md5_digest": "0df2bd45bd6bdc799053787a3cf6d34e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7822, "upload_time": "2015-08-25T13:45:00", "url": "https://files.pythonhosted.org/packages/bb/1c/cdfa8dcb71187f3756f34f0df77a989b1b16ca91a770e8407711e0774c81/noseapp_daemon-2.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0df2bd45bd6bdc799053787a3cf6d34e", "sha256": "b56864e3c7511c366329b34e72e9551d996f0baab942938c0374667187519ccd" }, "downloads": -1, "filename": "noseapp_daemon-2.3.0.tar.gz", "has_sig": false, "md5_digest": "0df2bd45bd6bdc799053787a3cf6d34e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7822, "upload_time": "2015-08-25T13:45:00", "url": "https://files.pythonhosted.org/packages/bb/1c/cdfa8dcb71187f3756f34f0df77a989b1b16ca91a770e8407711e0774c81/noseapp_daemon-2.3.0.tar.gz" } ] }