Merge pull request #753 from matrix-org/markjh/daemon_pusher

Optionally daemonize the pusher
This commit is contained in:
Mark Haines 2016-04-26 16:11:44 +01:00
commit 47571d11db

View File

@ -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,20 @@ def setup(config_options):
if __name__ == '__main__':
with LoggingContext("main"):
ps = setup(sys.argv[1:])
if ps.config.daemonize:
def run():
with LoggingContext("run"):
change_resource_limit(ps.config.soft_file_limit)
reactor.run()
daemon = Daemonize(
app="synapse-pusher",
pid=ps.config.pid_file,
action=run,
auto_close_fds=False,
verbose=True,
logger=logger,
)
else:
reactor.run()