6

Python でデーモンを作成して、Ubuntu サーバーで実行しようとしました。以下のコードは、私が問題を抱えているコードです。

import sys
import time
import threading
import logging
import logging.handlers

from daemon import runner

class Main(object):
    def run(self):
        my_logger = logging.getLogger('NameGeneratorDeamon')
        my_logger.setLevel(logging.DEBUG)
        handler = logging.handlers.SysLogHandler(address=('192.168.0.69', 514),facility=LOG_DAEMON)
        my_logger.addHandler(handler)
        try:
            my_logger.info('Started')
            while True:
                pass
        except Exception as inst:
            #Send error to syslog server
            my_logger.critical(inst)

class App():
    def __init__(self):
        self.stdin_path = '/dev/null'
        self.stdout_path = '/dev/null'
        self.stderr_path = '/dev/null'
        self.pidfile_path =  '/tmp/foo.pid'
        self.pidfile_timeout = 5
    def run(self):
        service = Main()
        service.run()

app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()

コードを実行したときに表示されるエラー メッセージは次のとおりです。

   File "Main.py", line 35, in <module>
     daemon_runner = runner.DaemonRunner(app)
   File "/usr/local/lib/python3.4/dist-packages/daemon/runner.py", line 111, in __init__
     self.daemon_context.stdout = open(app.stdout_path, 'w+t')
io.UnsupportedOperation: File or stream is not seekable.

これを修正する方法を知っている人はいますか、または Python でデーモンを作成するより良い方法はありますか?

4

1 に答える 1