From 0065152bb171abb08604b79c583c27e346166890 Mon Sep 17 00:00:00 2001 From: "roberto@djangocloud" Date: Tue, 18 Oct 2011 18:53:22 +1000 Subject: [PATCH] daemons throttling subsystem --- utils.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/utils.c b/utils.c index f411de17..c0a31dd0 100644 --- a/utils.c +++ b/utils.c @@ -2240,6 +2240,11 @@ void spawn_daemon(struct uwsgi_daemon *ud) { char *a; int cnt = 1; int devnull = -1; + int throttle = 0; + + if (uwsgi.current_time - ud->last_spawn <= 3) { + throttle = ud->respawns - (uwsgi.current_time-ud->last_spawn); + } pid_t pid = uwsgi_fork("uWSGI external daemon"); if (pid < 0) { @@ -2304,6 +2309,11 @@ void spawn_daemon(struct uwsgi_daemon *ud) { argv[cnt] = NULL; + if (throttle) { + uwsgi_log_verbose("throttling %s for %d seconds\n", argv[0], throttle); + sleep(throttle); + } + uwsgi_log_verbose("running %s\n", argv[0]); if (execvp(argv[0], argv)) { uwsgi_error("execvp()");