python-daemon 오류

리눅스 python-daemon 오류

간단한 파이썬 데몬을 python-daemon 패키지를 설치해서 작성했는데, 아래와 같은 오류가 발생했다.
파이썬 virtualenv 환경에서 스크립트를 작성했다.

  File "xipamd.py", line 92, in 
    daemon_runner = runner.DaemonRunner(d)
  File "/home/snowfox/venv/lib/python3.6/site-packages/daemon/runner.py", line 114, in __init__
    self._open_streams_from_app_stream_paths(app)
  File "/home/snowfox/venv/lib/python3.6/site-packages/daemon/runner.py", line 133, in _open_streams_from_app_stream_paths
    self.daemon_context.stdout = open(app.stdout_path, 'w+t')
io.UnsupportedOperation: File or stream is not seekable.

/home/snowfox/venv/lib/python3.6/site-packages/daemon/runner.py를 수정한다.(파이썬 가상환경에서 설치된 파일임)

원래 파이썬 코드.

...
    def _open_streams_from_app_stream_paths(self, app):
        """ Open the `daemon_context` streams from the paths specified.

            :param app: The application instance.

            Open the `daemon_context` standard streams (`stdin`,
            `stdout`, `stderr`) as stream objects of the appropriate
            types, from each of the corresponding filesystem paths
            from the `app`.
            """
        self.daemon_context.stdin = open(app.stdin_path, 'rt')
        self.daemon_context.stdout = open(app.stdout_path, 'w+t')
        self.daemon_context.stderr = open(
                app.stderr_path, 'w+t', buffering=0)
...

수정..
위 부분을 아래처럼 수정한다.

        self.daemon_context.stdin = open(app.stdin_path, 'wb+', buffering=0)
        self.daemon_context.stdout = open(app.stdout_path, 'wb+', buffering=0)
        self.daemon_context.stderr = open(
                app.stderr_path, 'wb+', buffering=0)

일단 급한대로 실행은 되는데, 이 runner 를 이후 더 이상 지원하지 않을 예정이라 한다. 결국 다른 방법을 사용해야 한다는 것인가?

참고문서:
https://pagure.io/python-daemon/issue/8
https://stackoverflow.com/questions/37532479/python3-create-daemon

답글 남기기

Your email address will not be published.