diff --git a/.gitignore b/.gitignore index 2b0f325..ed24426 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ lib-cov config/dev.json config/stage.json config/prod.json +circus/*.log diff --git a/Makefile b/Makefile index 418a6f5..3b14547 100644 --- a/Makefile +++ b/Makefile @@ -53,3 +53,7 @@ loadtests-check: sleep 1 && cd loadtests && \ make test SERVER_URL=http://127.0.0.1:5000; \ EXIT_CODE=$$?; kill $$PID; exit $$EXIT_CODE + +.PHONY: circus +circus: + circusd circus/loop-server.ini diff --git a/circus/loop-server.ini b/circus/loop-server.ini new file mode 100644 index 0000000..87265c1 --- /dev/null +++ b/circus/loop-server.ini @@ -0,0 +1,27 @@ +[circus] +check_delay = 5 +endpoint = tcp://127.0.0.1:5555 +pubsub_endpoint = tcp://127.0.0.1:5556 +stats_endpoint = tcp://127.0.0.1:5557 + +[plugin:flapping] +use = circus.plugins.flapping.Flapping +retry_in = 3 +max_retry = 2 + +[watcher:loop] +cmd = node loop/index.js --fd $(circus.sockets.loop) +use_sockets = True +warmup_delay = 0 +numprocesses = 2 +stop_children = true +stop_signal = SIGINT +stdout_stream.class = StdoutStream +stderr_stream.class = StdoutStream + +[socket:loop] +host = 127.0.0.1 +port = 5000 + +[env:loop] +NODE_ENV = dev diff --git a/loop/index.js b/loop/index.js index 3fd727d..05f4278 100644 --- a/loop/index.js +++ b/loop/index.js @@ -106,12 +106,19 @@ pushServerConfig(app, conf); app.use(raven.middleware.express(conf.get('sentryDSN'))); // Starts HTTP server. +var argv = require('yargs').argv; var server = http.createServer(app); -server.listen(conf.get('port'), conf.get('host'), function(){ - console.log('Server listening on http://' + - conf.get('host') + ':' + conf.get('port')); -}); +if (argv.hasOwnProperty("fd")) { + server.listen({fd: parseInt(argv.fd, 10)}, function() { + console.log("Server listening on fd://" + argv.fd); + }); +} else { + server.listen(conf.get('port'), conf.get('host'), function(){ + console.log('Server listening on http://' + + conf.get('host') + ':' + conf.get('port')); + }); +} // Handle websockets. var ws = websockets(storage, logError, conf); diff --git a/package.json b/package.json index 71b39f3..7ff0241 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "sodium": "1.0.11", "atob": "1.1.2", "express-hawkauth": "0.2.0", - "eslint": "0.7.x" + "eslint": "0.7.x", + "yargs": "1.3.1" }, "devDependencies": { "chai": "1.9.x",