summary refs log tree commit diff
path: root/synapse/app
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/app')
-rw-r--r--synapse/app/pusher.py35
1 files changed, 31 insertions, 4 deletions
diff --git a/synapse/app/pusher.py b/synapse/app/pusher.py
index 9381fe2251..5f3200cf4c 100644
--- a/synapse/app/pusher.py
+++ b/synapse/app/pusher.py
@@ -37,6 +37,8 @@ from synapse.util.versionstring import get_version_string
 from twisted.internet import reactor, defer
 from twisted.web.resource import Resource
 
+from daemonize import Daemonize
+
 import sys
 import logging
 
@@ -54,13 +56,19 @@ class SlaveConfig(DatabaseConfig):
         self.start_pushers = True
         self.listeners = config["listeners"]
         self.soft_file_limit = config.get("soft_file_limit")
+        self.daemonize = config.get("daemonize")
+        self.pid_file = self.abspath(config.get("pid_file"))
 
-    def default_config(self, **kwargs):
+    def default_config(self, server_name, **kwargs):
+        pid_file = self.abspath("pusher.pid")
         return """\
-        ## Slave ##
+        # Slave configuration
+
         # The replication listener on the synapse to talk to.
         #replication_url: https://localhost:{replication_port}/_synapse/replication
 
+        server_name: "%(server_name)s"
+
         listeners: []
         # Enable a ssh manhole listener on the pusher.
         # - type: manhole
@@ -75,7 +83,12 @@ class SlaveConfig(DatabaseConfig):
         #      compress: False
 
         report_stats: False
-        """
+
+        daemonize: False
+
+        pid_file: %(pid_file)s
+
+        """ % locals()
 
 
 class PusherSlaveConfig(SlaveConfig, LoggingConfig):
@@ -248,6 +261,9 @@ def setup(config_options):
         sys.stderr.write("\n" + e.message + "\n")
         sys.exit(1)
 
+    if not config:
+        sys.exit(0)
+
     config.setup_logging()
 
     database_engine = create_engine(config.database_config)
@@ -278,4 +294,15 @@ def setup(config_options):
 if __name__ == '__main__':
     with LoggingContext("main"):
         ps = setup(sys.argv[1:])
-        reactor.run()
+
+        if ps.config.daemonize:
+            daemon = Daemonize(
+                app="synapse-pusher",
+                pid=ps.config.pid_file,
+                action=reactor.run,
+                auto_close_fds=False,
+                verbose=True,
+                logger=logger,
+            )
+        else:
+            reactor.run()