{
"info": {
"author": "Luper Rouch",
"author_email": "luper.rouch@gmail.com",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: BSD License",
"Topic :: Internet :: WWW/HTTP :: WSGI :: Server"
],
"description": "Rainbow Saddle\n==============\n\n.. image:: https://travis-ci.org/flupke/rainbow-saddle.svg\n :target: https://travis-ci.org/flupke/rainbow-saddle\n\nrainbow-saddle is a wrapper around `Gunicorn `_ to\nsimplify code reloading without dropping requests.\n\nInstallation\n------------\n\nInstall from pypi::\n\n $ sudo pip install rainbow-saddle\n\nOr from source::\n\n $ sudo ./setup.py install\n\nWhy?\n----\n\nSometimes doing a ``kill -HUP `` is not sufficient to reload your\ncode. For example it doesn't work well `if you host your code behind a symlink\n`_, or if a `.pth in your\ninstallation is updated to point to a different directory\n`_.\n\nThe correct way to reload code in such situations is a bit complicated::\n\n # Reexec a new master with new workers\n /bin/kill -s USR2 `cat \"$PID\"`\n # Graceful stop old workers\n /bin/kill -s WINCH `cat \"$PIDOLD\"`\n # Graceful stop old master \n /bin/kill -s QUIT `cat \"$PIDOLD\"`\n\nIt also has the downside of changing the \"master\" process PID, which confuses\ntools such as supervisord.\n\nrainbow-saddle handles all of this for you, and never changes its PID.\nReloading code becomes as simple as sending a ``SIGHUP`` again::\n\n $ rainbow-saddle --pid /tmp/mysite.pid gunicorn_paster development.ini --log-level debug \n $ kill -HUP `cat /tmp/mysite.pid`\n\n\nNews\n====\n\n0.4.0\n-----\n\nSupport new binary upgrade method used by Gunicorn, since version 19.6.0. Drops\nsupport for all previous versions of Gunicorn. See commit\nbenoitc/gunicorn@418f140 for more info, thanks to Jacob Magnusson.\n\n0.3.1\n-----\n\nMinor Python3 compatibility fix, thanks to Justin Locsei.\n\n0.3.0\n-----\n\nThanks to Rafael Floriano da Silva for the following:\n\n* add --gunicorn-pidfile\n* fix race condition for slow starting apps\n* update psutil",
"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/flupke/rainbow-saddle",
"keywords": "gunicorn wrapper graceful restart",
"license": "BSD",
"maintainer": null,
"maintainer_email": null,
"name": "rainbow-saddle",
"package_url": "https://pypi.org/project/rainbow-saddle/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/rainbow-saddle/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "https://github.com/flupke/rainbow-saddle"
},
"release_url": "https://pypi.org/project/rainbow-saddle/0.4.0/",
"requires_dist": null,
"requires_python": null,
"summary": "A wrapper around gunicorn to handle graceful restarts correctly",
"version": "0.4.0"
},
"last_serial": 2381801,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "21c24f7a76dab9240154725131b3e055",
"sha256": "9bbcd8845d442bed85fdb0871436cc76586e5f52c3b61ff118a0c36a8ab4f0d4"
},
"downloads": -1,
"filename": "rainbow-saddle-0.1.tar.gz",
"has_sig": false,
"md5_digest": "21c24f7a76dab9240154725131b3e055",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3618,
"upload_time": "2013-03-08T18:13:19",
"url": "https://files.pythonhosted.org/packages/5d/dc/3737be4e1ec7b0f4b1d69835d415bb3bc36531fc0ceb3cf25eb4715e5a72/rainbow-saddle-0.1.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "6c9351f6ca0dacd08cb09941dd736503",
"sha256": "c6da357e40a75ffd7e99aacd5b4cf27eb2639de7ccf34538a9a560f1fccb1f27"
},
"downloads": -1,
"filename": "rainbow-saddle-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "6c9351f6ca0dacd08cb09941dd736503",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3638,
"upload_time": "2014-12-11T11:13:52",
"url": "https://files.pythonhosted.org/packages/55/5d/41119742cc67a722db7309a109d95cfbf284b1af52493d43c6b4cc527031/rainbow-saddle-0.1.1.tar.gz"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "3c24d883ab8bdd26fe4bc8840d3ffeb5",
"sha256": "2c85213ec107b57a7139d045a878ad17c7bb76e68ba460410680378400c3f8bc"
},
"downloads": -1,
"filename": "rainbow-saddle-0.2.tar.gz",
"has_sig": false,
"md5_digest": "3c24d883ab8bdd26fe4bc8840d3ffeb5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3699,
"upload_time": "2014-06-25T16:04:26",
"url": "https://files.pythonhosted.org/packages/e6/51/d91973cabdc9c5e5f344d5d2c0d93a5f1cb173b01969922277aeab4ff79c/rainbow-saddle-0.2.tar.gz"
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "f4eebf4eccada0ea22ecba49ae52fa94",
"sha256": "b22352712a26c2b00df090ab449ef4447a0ac4f8da161537272b7762a7afb632"
},
"downloads": -1,
"filename": "rainbow-saddle-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "f4eebf4eccada0ea22ecba49ae52fa94",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3703,
"upload_time": "2015-11-28T19:24:06",
"url": "https://files.pythonhosted.org/packages/3e/62/0b688dc6443b2406bd85e579db0596bfc5cb06f1a96daa62c84974fc5993/rainbow-saddle-0.2.1.tar.gz"
}
],
"0.3.0": [
{
"comment_text": "",
"digests": {
"md5": "b7f3ab8f8a77ea96712cebee7a2a7c91",
"sha256": "956dd2dd6e25304adad6118605bda6dc5745ea150e5b3b38b8cc4133289bf0a8"
},
"downloads": -1,
"filename": "rainbow-saddle-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "b7f3ab8f8a77ea96712cebee7a2a7c91",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5031,
"upload_time": "2015-12-29T10:24:28",
"url": "https://files.pythonhosted.org/packages/ec/0a/5d6af943d07be9bc0ca987db09a74a26445aedc4fa89c6bf8e521e47bf6d/rainbow-saddle-0.3.0.tar.gz"
}
],
"0.3.1": [
{
"comment_text": "",
"digests": {
"md5": "dd5034fb269ac0146a40a596efeed182",
"sha256": "132bf6c98c18675f36a4456f247e3b29a8e7fcf7bb308bb08b0ccc76386003d0"
},
"downloads": -1,
"filename": "rainbow-saddle-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "dd5034fb269ac0146a40a596efeed182",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5048,
"upload_time": "2016-04-08T15:25:22",
"url": "https://files.pythonhosted.org/packages/9b/99/dc6612faafe1ad5a5f564b6a3218eb841d429ef0c4fb5e1eed7aa5873581/rainbow-saddle-0.3.1.tar.gz"
}
],
"0.3.2": [
{
"comment_text": "",
"digests": {
"md5": "c3de0f4c343bdef050ca7d0efc0730e3",
"sha256": "86b546840dd073dff1d6e523c2b1957300be3523f2ce324d8ff794cbd85b555e"
},
"downloads": -1,
"filename": "rainbow-saddle-0.3.2.tar.gz",
"has_sig": false,
"md5_digest": "c3de0f4c343bdef050ca7d0efc0730e3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5107,
"upload_time": "2016-05-26T13:45:59",
"url": "https://files.pythonhosted.org/packages/47/e1/b78a8f5917c00976778f51982c4ff87e89b33e96ffee7a207bc946d685c2/rainbow-saddle-0.3.2.tar.gz"
}
],
"0.4.0": [
{
"comment_text": "",
"digests": {
"md5": "1368ec53b7421f7a42096d063598442b",
"sha256": "97a481c16151c5bf9d08530117c5b2a345f0935f669862d268f5ffabfe060566"
},
"downloads": -1,
"filename": "rainbow-saddle-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "1368ec53b7421f7a42096d063598442b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5172,
"upload_time": "2016-10-05T11:51:20",
"url": "https://files.pythonhosted.org/packages/59/a0/25744c1b1fe7631b43bd69a9bbf4f195ba08bb3cedb3ab41cbd3ad1a0b17/rainbow-saddle-0.4.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "1368ec53b7421f7a42096d063598442b",
"sha256": "97a481c16151c5bf9d08530117c5b2a345f0935f669862d268f5ffabfe060566"
},
"downloads": -1,
"filename": "rainbow-saddle-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "1368ec53b7421f7a42096d063598442b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5172,
"upload_time": "2016-10-05T11:51:20",
"url": "https://files.pythonhosted.org/packages/59/a0/25744c1b1fe7631b43bd69a9bbf4f195ba08bb3cedb3ab41cbd3ad1a0b17/rainbow-saddle-0.4.0.tar.gz"
}
]
}