파이썬 데몬 예제

PID 잠금 파일에 대한 컨텍스트 관리자입니다. 데몬 컨텍스트가 열리고 닫히면 pidfile 컨텍스트 관리자를 입력하고 종료합니다. 부모에게 베니미트. 그리고 두 번 포크 ()의 데몬 아이가 너무 죽을 때 좀비로 변하는 것에 대해 걱정할 필요가 없다는 것을 잊지 마십시오. 목록의 요소는 파일 설명자(파일 개체의 fileno() 메서드에서 반환됨) 또는 Python 파일 개체입니다. 각각은 데몬 시작 중에 닫을 수 없는 파일을 지정합니다. «서비스»라고 하는 많은 시스템에서 관련 개념이 있습니다. 서비스는 이 PEP의 모델과 다르며, 현재 프로그램이 데몬 프로세스로 계속 실행되는 대신 서비스가 백그라운드에서 실행되는 추가 프로세스를 시작하고 현재 프로세스가 일부 프로세스를 통해 해당 추가 프로세스와 통신한다는 점에서 정의된 채널을 정의합니다. 나는 데몬을 작성하는 사람들에게 관심이있을 수있는 파이썬에서 권한을 떨어 뜨리기위한 패키지를 만들었습니다 : 코드를 사용하여 프로세스를 데몬으로 변환하는 데몬 응용 프로그램을 실행하고 있습니다. 그것은 잘 작동하지만, 실행 직후, 프로세스가 스핀 록에있는 것처럼 거의 모든 CPU를 차지하기 시작합니다. 그러나 지정된 파이프에서 읽기를 기다리는 프로세스가 회전하는 것이 아니라 차단되어야 합니다. 프로세스가 CPU의 대부분을 차지하는 이유와 그렇게에서 그것을 중지하는 방법 어떤 생각? «createDaemon()» 함수를 호출한 후의 코드는 다음과 같습니다. 클래스, DaemonContext, 데몬 프로세스로 실행 되는 프로그램에 대 한 설정 및 프로세스 컨텍스트를 나타내는 정의 됩니다.

이제 남은 유일한 문제는 백트레이스입니다. systemd가 각 줄을 단일 로그 항목으로 처리하고 파이썬이 백트레이스를 여러 줄로 기록하므로 로그 메시지를 추가로 처리하면 백트레이스가 엉망이 되고 일부가 손실될 수 있습니다. 패키지 파이썬 데몬은 절대적으로 파이썬 프로그램에 대한 데몬을 만들 수있는 유일한 방법은 아니며, 가지고있는 모든 가능성을 신중하게 고려해야합니다. 좋아, 여기 있습니다. 이것은 내가 데몬을 만드는 방법과 대부분의 사람들에게 추천 할 수있는 방법입니다. systemd가 서비스에서 출력을 가로채고 각 줄을 출력으로 처리하므로 로깅은 인쇄 함수를 사용하는 것만큼 간단할 수 있습니다.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies