2017-07-13 4 views
0

Ich bin auf der Suche nach einem Daemon-Prozess, der einige Aufgaben bei der Eingabe ausführt. 99% der Zeit schweigt es über den Hintergrund, nichts zu tun und die Aufgaben sind kurz und wenige in der Zahl. Wie würde ich die Schnittstelle zwischen zwei Anwendungen erstellen, von denen eine die Aufgabe und den Daemon, der sie ausführt, konstruiert?Daemon-Prozess-Struktur

Ich dachte, dass der Daemon einen Ordner haben könnte, den ich regelmäßig überprüfe. Wenn dort einige Dateien sind, liest es es und folgt Anweisungen von dort.

Würde das gut funktionieren oder gibt es einen besseren Weg?

BEARBEITEN: Beispieldämoncode hinzugefügt.

#!/usr/bin/python 

import time 
from daemon import runner 

class Daemon(): 
    def __init__(self): 
     self.stdin_path = '/dev/null' 
     self.stdout_path = '/dev/tty' 
     self.stderr_path = '/dev/tty' 
     self.pidfile_path = '/tmp/foo.pid' 
     self.pidfile_timeout = 5 

     self.task_dir = os.path.expanduser("~/.todo/daemon_tasks/") 

    def run(self): 
     while not time.sleep(1): 

      if len(os.listdir(self.task_dir)) == 0: 
       for task in os.listdir(self.task_dir): 
        self.process_task(task) 

    def process_task(self, task): 
     # input: filename 
     # output: void 

     # takes task and executes it according to instructions in the file 
     pass 



if __name__ == '__main__': 
    app = Daemon() 
    daemon_runner = runner.DaemonRunner(app) 
    daemon_runner.do_action() 

Antwort

1

Ich würde in Unix-Sockets von FIFOs als eine Option untersuchen. Dies macht die Abfrage eines Verzeichnisses überflüssig. Einige SO-Link für Hilfe How to create special files of type socket?

+1

Die Vollständigkeit der Implementierung finden Sie hier: https://gist.github.com/Jonksar/10d20fd6274f40ee9023e09c742f8951 –