我希望构建一个守护进程,在给定一些输入时执行某些任务。 99%的时间它在背景上无声无息,任务很短,数量很少。我如何在两个构建任务的应用程序和执行它的守护程序之间构建接口?
我原以为守护进程可能有一个我定期检查的文件夹。如果那里有一些文件,它会读取它并遵循那里的指令。
这会运作良好还是有更好的方法?
编辑:添加了示例守护程序代码。
#!/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()
答案 0 :(得分:1)
我会查看FIFO的unix插槽作为选项。这消除了对某些目录进行轮询的需要。一些SO链接可以获得帮助How to create special files of type socket?