1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-09-19 19:01:03 +00:00

Dropped python-daemon and its daemon-runner wrapper

This makes the watcher persisting with the terminal, breaking
installs using it as a initd/sysV daemon. The watcher currently
doesn't print anything on standard output or standard error.

Closes #39, #72
This commit is contained in:
spl0k 2017-10-08 16:22:04 +02:00
parent 81609be7ce
commit 62bcce331a
3 changed files with 15 additions and 18 deletions

View File

@ -30,7 +30,7 @@ For more details, go check the [API implementation status][api].
* [Transcoding](#transcoding) * [Transcoding](#transcoding)
* [Command line interface](#command-line-interface) * [Command line interface](#command-line-interface)
* [Quickstart](#quickstart) * [Quickstart](#quickstart)
* [Scanner daemon](#scanner-daemon) * [Watching library changes](#watching-library-changes)
* [Upgrading](#upgrading) * [Upgrading](#upgrading)
## Installation ## Installation
@ -353,12 +353,15 @@ Once you've added a folder, you will need to scan it:
You should now be able to enjoy your music with the client of your choice! You should now be able to enjoy your music with the client of your choice!
## Scanner daemon ## Watching library changes
Instead of manually running a scan every time your library changes, you can Instead of manually running a scan every time your library changes, you can
run a daemon that will listen to any library change and update the database run a watcher that will listen to any library change and update the database
accordingly. The daemon is `bin/supysonic-watcher` and can be run as an accordingly.
*init.d* script. The watcher is `bin/supysonic-watcher`, it is a non-exiting process and doesn't
print anything to stdout nor stderr. If you want to keep it running in
background, either use the old `nohup` or `screen` methods, or start it as a
simple systemd unit (unit file not included).
## Upgrading ## Upgrading

View File

@ -4,7 +4,7 @@
# This file is part of Supysonic. # This file is part of Supysonic.
# #
# Supysonic is a Python implementation of the Subsonic server API. # Supysonic is a Python implementation of the Subsonic server API.
# Copyright (C) 2014 Alban 'spl0k' Féron # Copyright (C) 2014-2017 Alban 'spl0k' Féron
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by # it under the terms of the GNU Affero General Public License as published by
@ -19,16 +19,9 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
from daemon.runner import DaemonRunner
from supysonic.watcher import SupysonicWatcher from supysonic.watcher import SupysonicWatcher
watcher = SupysonicWatcher() if __name__ == "__main__":
watcher.stdin_path = '/dev/null' watcher = SupysonicWatcher()
watcher.stdout_path = '/dev/tty' watcher.run()
watcher.stderr_path = '/dev/tty'
watcher.pidfile_path = '/tmp/supysonic-watcher.pid'
watcher.pidfile_timeout = 5
daemon_runner = DaemonRunner(watcher)
daemon_runner.do_action()

View File

@ -3,7 +3,7 @@
# This file is part of Supysonic. # This file is part of Supysonic.
# #
# Supysonic is a Python implementation of the Subsonic server API. # Supysonic is a Python implementation of the Subsonic server API.
# Copyright (C) 2014 Alban 'spl0k' Féron # Copyright (C) 2014-2017 Alban 'spl0k' Féron
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by # it under the terms of the GNU Affero General Public License as published by
@ -20,7 +20,7 @@
import time import time
import logging import logging
from signal import signal, SIGTERM from signal import signal, SIGTERM, SIGINT
from threading import Thread, Condition, Timer from threading import Thread, Condition, Timer
from logging.handlers import TimedRotatingFileHandler from logging.handlers import TimedRotatingFileHandler
from watchdog.observers import Observer from watchdog.observers import Observer
@ -241,6 +241,7 @@ class SupysonicWatcher(object):
store.close() store.close()
signal(SIGTERM, self.__terminate) signal(SIGTERM, self.__terminate)
signal(SIGINT, self.__terminate)
self.__running = True self.__running = True
queue.start() queue.start()