2012-07-27 3 views
2

다양한 twistd ... 명령을 실행하기 위해 psutil을 사용하는 Python 프로그램이 있습니다. twistd은 프로세스를 생성하고 daemonize하고 foo.pid에서 pid를 읽을 수 있습니다.트위스트 생성 프로세스의 PID를 안정적으로 얻는 방법은 무엇입니까?

또한이 pid 파일이 프로세스가 종료 될 때 정리되도록 설정합니다. 즉, 스폰 된 프로세스가 너무 빨리 끝나서 해당 PID를 읽을 수 없음을 의미합니다. 그것은 PID 파일을 작성할 수없는 경우

twistd 오류 코드를 반환하지, 그래서 더 PID 파일없이 트위스트 오류 코드는 프로세스가 매우 빠르게 종료 성공적으로 양산되었다 의미하지만,이 모든 과정이 매우 색다른 것 같다 있다고 가정 할 수 있습니다 . 한 번에 다시 채워지지만 제거 될 가능성을 처리하면서 pid 파일이 내용으로 채워질 때까지 기다릴 필요는 없습니다.

더 좋은 방법이 있습니까?

답변

2

더 좋은 방법은 없습니다 (또는 해결 방법이 무엇인지 알기가 매우 어렵거나 불가능한 경우, 해결하려는 일반적인 문제를 설명하지 않았으므로 방금 문제를 이미 선택한 솔루션을 가지고 있어야합니다.)

을 사용하기에 더 적합하도록하기 위해 open feature request이 있습니다. 문제를 해결하는 데 도움을 주면 원하는대로 할 수 있습니다.

+0

"이미 선택한"솔루션은 최선의 시도입니다. 예를 들어 커맨드 라인이 틀렸을 때 'twistd'의 극단적 인 기괴한 행동을 구분할 수는 없으며 단지 종료 코드가 0 인 리턴 코드와 매우 빨리 끝나는 프로그램 만 리턴 할 수는 없습니다. – porgarmingduod

+0

죄송합니다. 제 요점이 충분하지 않았던 것 같습니다. 왜 당신은 대가리 같은 자식 프로세스를 시작한 다음 그 PID를 전혀 배우지 않으려 고 시도하고 있습니까? 전반적인 목표는 무엇입니까? –

+0

일반적인 문제는 메모리 및 CPU 사용량과 같은보고 자료뿐만 아니라 필요한 경우 몇 가지 트위스트 서비스를 시작하고 모니터링하는 것입니다. – porgarmingduod

0

나는 당신이 psutil를 사용하지만, 단지 트위스트에서 spawnProcess이 PID를 이미 알고 IReactorProcess으로 실행됩니다 호출하고 어떤 부분이 확실하지 않다.

당신이 전화하고있는 경우 twistd 인 경우 원하는 경우 동일한 프로세스 내에서 수행 할 작업을 수행 할 수있는 방법이 있습니다.

+0

이 질문은 사용되는 'twistd'를 매우 명시 적으로 지정합니다. 프로세스를 만드는 방법을 묻지는 않지만 프로세스의 PID를 얻는 방법은 명령 줄'twistd'로 시작합니다. 나는'-n'을 사용하여'twistd'를 daemonize하지 않을 수 있다는 것을 알고 있습니다. 어떤 경우에 psutil로 자신을 생성하는 프로세스의 pid를 사용할 수 있습니다. – porgarmingduod

+0

고마워, 내가 'twistd'를 지정했다는 것을 알았지 만, 그것이 나에게 당신이 그것을 사용하고있는 것이 분명하다는 것을 의미하지는 않는다. 당신의 질문은 psutil을 사용하여 여러가지 twisted 명령을 실행하고 있다고 말합니다. 당신이 새로운 프로세스를 산 것처럼 들리는군요. (그리고,'-n'은 관련이 없습니다.) – Julian

+0

사실,'-n'은'Popen'을 사용하여 생성 된'twistd' 프로세스가 제가 관심있는 프로세스입니다, 즉' Popen' 생성 프로세스는 .pid 파일의 PID와 동일합니다. – porgarmingduod

관련 문제