2017-07-13 21 views
0

私はいくつかの入力を与えられたときにいくつかのタスクを行うデーモンプロセスを構築しようとしています。バックグラウンドで何もしないで静かな時間を送っている時間の99%は、タスクが短く、数が少ないです。タスクとそれを実行するデーモンのうちの1つを構築する2つのアプリケーションの間に、どのようにしてインタフェースを構築しますか?デーモンプロセスの構造

デーモンに定期的にチェックするフォルダがあると思っていました。そこにいくつかのファイルがある場合、それを読んでそこから指示に従います。

これはうまくいくのでしょうか、それとも良い方法がありますか?

EDIT:デーモンコード例を追加しました。

#!/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() 

答えて

1

私はオプションとしてFIFOのUnixソケットを調べます。これにより、一部のディレクトリのポーリングが不要になります。ヘルプのためのSOのリンクHow to create special files of type socket?

+1

完全な実装については、ここをクリックしてください:https://gist.github.com/Jonksar/10d20fd6274f40ee9023e09c742f8951 –