diff --git a/r2/r2/controllers/error.py b/r2/r2/controllers/error.py index 78cd8b074..462a3af6a 100644 --- a/r2/r2/controllers/error.py +++ b/r2/r2/controllers/error.py @@ -147,7 +147,9 @@ class ErrorController(RedditController): return template.render(logo_url=static(g.default_header_url)) def send503(self): - response.headers["Retry-After"] = str(request.environ["retry_after"]) + retry_after = request.environ.get("retry_after") + if retry_after: + response.headers["Retry-After"] = str(retry_after) return request.environ['usable_error_content'] def GET_document(self): diff --git a/r2/r2/controllers/health.py b/r2/r2/controllers/health.py index 6f83c5554..ba768f034 100644 --- a/r2/r2/controllers/health.py +++ b/r2/r2/controllers/health.py @@ -21,8 +21,10 @@ ############################################################################### import json +import os -from pylons import g, response +from pylons import g, request, response +from pylons.controllers.util import abort from r2.controllers.reddit_base import MinimalController from r2.lib import promote @@ -39,6 +41,10 @@ class HealthController(MinimalController): pass def GET_health(self): + if os.path.exists("/var/opt/reddit/quiesce"): + request.environ["usable_error_content"] = "No thanks, I'm full." + abort(503) + response.content_type = "application/json" return json.dumps(g.versions, sort_keys=True, indent=4)