Optionally daemonize the pusher

This commit is contained in:
Mark Haines 2016-04-26 15:37:41 +01:00
parent 3306cf45ca
commit 6df5a6a833

View File

@ -37,6 +37,8 @@ from synapse.util.versionstring import get_version_string
from twisted.internet import reactor, defer from twisted.internet import reactor, defer
from twisted.web.resource import Resource from twisted.web.resource import Resource
from daemonize import Daemonize
import sys import sys
import logging import logging
@ -54,13 +56,19 @@ class SlaveConfig(DatabaseConfig):
self.start_pushers = True self.start_pushers = True
self.listeners = config["listeners"] self.listeners = config["listeners"]
self.soft_file_limit = config.get("soft_file_limit") 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 """\ return """\
## Slave ## # Slave configuration
# The replication listener on the synapse to talk to. # The replication listener on the synapse to talk to.
#replication_url: https://localhost:{replication_port}/_synapse/replication #replication_url: https://localhost:{replication_port}/_synapse/replication
server_name: "%(server_name)s"
listeners: [] listeners: []
# Enable a ssh manhole listener on the pusher. # Enable a ssh manhole listener on the pusher.
# - type: manhole # - type: manhole
@ -75,7 +83,12 @@ class SlaveConfig(DatabaseConfig):
# compress: False # compress: False
report_stats: False report_stats: False
"""
daemonize: False
pid_file: %(pid_file)s
""" % locals()
class PusherSlaveConfig(SlaveConfig, LoggingConfig): class PusherSlaveConfig(SlaveConfig, LoggingConfig):
@ -248,6 +261,9 @@ def setup(config_options):
sys.stderr.write("\n" + e.message + "\n") sys.stderr.write("\n" + e.message + "\n")
sys.exit(1) sys.exit(1)
if not config:
sys.exit(0)
config.setup_logging() config.setup_logging()
database_engine = create_engine(config.database_config) database_engine = create_engine(config.database_config)
@ -278,4 +294,15 @@ def setup(config_options):
if __name__ == '__main__': if __name__ == '__main__':
with LoggingContext("main"): with LoggingContext("main"):
ps = setup(sys.argv[1:]) 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()