우분투 11.10, Python 2.6. 배경 : 저는 Twisted를 사용하여 루프에 앉아서 RESTful 명령이 오기를 기다리는 파이썬 응용 프로그램을 가지고 있습니다. 그래서 응용 프로그램이 시작되어 다양한 작업을 수행하는 스레드가 실행되고 주 스레드가 Twisted에 대한 콜백을 설정 한 다음 호출합니다 Twisted.reactor.run(), 영원히 차단합니다. 요청이 들어 오면 적절한 핸들러가 호출되고, 처리가 이루어지고, 응답이 되돌려 보내집니다.Apache + mod_wsgi + 영구 Python 응용 프로그램 - 조각이 누락 된 것 같습니다.
경영진이 싫어한다고 트위터가 제 트를 제거했습니다. 우리는 웹 서버로서 Apache로 이동하고 있습니다.
설명서를 사용하여 Apache2.0을 설치하고 웹 페이지를 제공하도록 구성했습니다. 또한 mod_wsgi를 설치했고 요청이 들어올 때 Apache와 임의의 Python 코드를 실행하도록 Apache를 구성 할 수있었습니다.
제가 누락 된 이유는 응용 프로그램을 지속적이고 항상 실행해야하기 때문에 파이썬 응용 프로그램을 Apache/mod_wsgi 비트에 연결하는 방법입니다. 내 wsgi 스크립트와 주요 응용 프로그램 사이에 파이프를 열어 요청을 그렇게 직렬화하는 것이 좋습니다. 그러나 이것이 이미 이미 존재해야만하는 것처럼 보입니다. 나는 무엇을 검색해야 할지를 알만큼 충분하지 않습니다.
오른쪽 방향으로 어떤 푸시도 크게 환영합니다.
명확성을 위해 추가 편집 : 웹 서버를 만들고 있지 않습니다. 문제의 응용 프로그램은 가상 컴퓨터에서 실행중인 호스트 응용 프로그램입니다. HTTP를 통해 RESTful 인터페이스에 의해 제어됩니다. 따라서 들어오는 명령을 듣고 응답 할 수 있어야합니다.
mod_wsgi가이 작업에 적합한 도구가 아닐 수도 있습니다. 괜찮습니다. 단지 무엇인지 모르겠습니다.
"내 전체 응용 프로그램을 실행하기 위해 아파치에 의존하는 것은 여전히 조금 어색한 것 같습니다." 나쁜 생각. 정말 좋은 것입니다. 더 나아가 Apache는 정적 컨텐츠를 제공하여 워크로드를 쉽게 처리 할 수 있으므로 응용 프로그램을 손쉽게 사용할 수 있습니다. –
우리는 어떤 코드를보아야합니까? 더 이상 "메인"스크립트가 없다는 것을 이해합니까 **? 'mod_wsgi'가 각 요청을 처리하기 위해 필요에 따라 애플리케이션을 호출한다는 것을 알고 있습니까? WSGI 표준 문서를 읽었습니까? 추가 코드를 제거하고 실제로 잘못된 것이 무엇인지에 대한 집중적 인 질문을 제공 할 수 있습니까? –
@ S.Lott : 처음에는 제 질문의 근원 인 것을 이해합니다. 내가 이해하려고 노력하는 것은 끊임없이 실행되는 애플리케이션에 어떻게 맞을지뿐만 아니라 들어오는 http 요청을 수신 대기해야하는 것입니다. 현재 사용중인 Twisted 라이브러리는 요청이 들어올 때 실행되는 콜백 함수를 수락함으로써이를 제공합니다. 두 가지 버전의 코드는 지금까지 시도한 것을 문서화하기 위해 제공되었습니다. – JoeFish