나는 응용 프로그램을 실행하는 것이 매우 쉽습니다 PHP/Apache
세계에서 오는거야. PHP
응용 프로그램이 중단 될 때마다 해당 요청을 실행하는 Apache 프로세스가 중지되지만 서버는 여전히 행복하게 망가져 다른 클라이언트에 응답합니다. Python 응용 프로그램을 다른 방식으로 작동시키는 방법이 있습니까? Tornado
또는 CherryPy
과 같은 wsgi 서버를 설정하면 어떻게 작동합니까? 또한, 다른 도메인을 가진 한 서버에서 여러 응용 프로그램을 어떻게 실행합니까?Apache와 비슷한 WSGI 서버를 설치하는 방법은 무엇입니까?
답변
UNIX와 비슷한 환경에 있다면 Daemon Mode의 Apache에서 mod_wsgi을 실행할 수 있습니다. 이것은 파이썬 코드에 대한 별도의 프로세스가 있다는 것을 의미합니다. 그리고 서버가 충돌하더라도 서버는 정상적으로 계속 실행됩니다. WSGI 프로세스가 자체적으로 다시 시작되기를 바랍니다. WSGI 응용 프로그램은 여러 프로세스 및 프로세스 당 여러 스레드에서 실행될 수 있습니다.
동일한 서버에서 여러 도메인을 실행하는 경우 Name-Based Virtual Hosts을 확인하십시오.
어쨌든 WSGI 서버의 경우 앞으로 어떤 일이 벌어 질 수 있습니다. 이는 모든 파이썬 예외가 현재 요청에만 영향을 미치고 프레임 워크 또는 WSGI 서버가 예외를 포착하여 로그하고 HTTP 500 상태 페이지로 변환하기 때문입니다. 응용 프로그램은 여전히 메모리에 남아 있으며 향후 요청을 계속 처리합니다.
우리가 알아 낸 것은 정확히 '아파치 프로세스 충돌'이 무엇을 의미합니다.
프로세스가 코어 덤프로 인해 프로세스를 완전히 종료하게 만드는 경우 코드가 충돌하는 경우는 거의 없습니다. 따라서 응용 프로그램 언어 수준의 오류를 전체 프로세스 충돌과 동일시하는 용어에 혼동을 느낍니까?
프로세스를 중단하는 방법을 찾았더라도 Apache/mod_wsgi가 정상적으로 처리하고 프로세스가 대체됩니다. Gunicorn WSGI 서버도이를 수행 할 것입니다. CherryPy는 모니터하는 프로세스 매니저가없는 한 프로세스 모니터가 모니터를 다시 시작하지 않는 한 CherryPy를 사용하지 않습니다. 토네이도는 단일 프로세스 모드에서 동일한 문제가 발생합니다. 토네이도를 Gunicorn의 작업자로 사용하는 것은 그 일환으로 한 가지 방법입니다. 토네이도 자체가 여러 프로세스를 실행하여 프로세스를 다시 시작할 수 있다고 생각합니다.
파이썬 예외를 유발 한 응용 프로그램 버그가 충분히 좋지 않고 프로세스 내에서 상태가 손상되면 이후 요청에 문제가 발생할 수 있습니다. 이것은 PHP와의 한 가지 차이점입니다. PHP를 통해 요청이 성공했는지 여부에 관계없이 응용 프로그램은 효과적으로 폐기되고 지속되지 않습니다. 따라서 버그가있는 코드는 후속 요청에 영향을 줄 수 없습니다. 파이썬에서는 코드가로드되고 상태가 유지되는 프로세스가 요청 사이에 유지되므로 기술적으로 프로세스를 다시 시작해야 문제를 해결할 수 있습니다. 하나의 요청이 오류 응답을 반환하면 자동으로 프로세스를 다시 시작하는 메커니즘이 있지만 어떤 WSGI 서버도 모르겠습니다.
Graham, 혼란스러워서 잡히지 않은 예외처럼 응용 프로그램 언어 오류에 대해 이야기하고있었습니다. 철저한 답변 주셔서 감사합니다. –
- 1. 정상적으로 WSGI 서버를 종료하는 방법은 무엇입니까?
- 2. hostgator vps hosting에서 chat.mydomain.com에 node.js 서버를 설치하는 방법은 무엇입니까?
- 3. 음성 인식 서버를 설치하는 방법은 무엇입니까?
- 4. Netbeans를 사용하여 JBoss 서버를 설치하는 방법은 무엇입니까?
- 5. Tomcat 로깅 (Apache와 같은)
- 6. 데비안에 Kerberos 서버를 설치하는 방법
- 7. Python : inetd에서 WSGI 서버를 실행 하시겠습니까?
- 8. IIS에서 파이썬 wsgi 서버를 어떻게 설정합니까?
- 9. 로컬 서브 버전 서버를 설치하는 가장 쉬운 방법은 무엇입니까?
- 10. 내 자신의 XML API 서버를 설치하는 방법은 무엇입니까?
- 11. MVC 4에 인트라넷 서버를 설치하는 가장 좋은 방법은 무엇입니까?
- 12. 사용자 관리로 http 액세스 가능 파일 서버를 설치하는 방법은 무엇입니까?
- 13. Tomcat 서버와 xampp 서버를 PC에 별도로 설치하는 방법은 무엇입니까?
- 14. Django - 공유 호스팅에서 별도의 미디어/정적 서버를 설치하는 방법은 무엇입니까?
- 15. Access 2000 데이터베이스에 연결된 서버를 설치하는 방법은 무엇입니까?
- 16. Linux에 SVN 서버를 설치하는 방법
- 17. Subversion, 테스트 서버를 설치하는 방법?
- 18. Windows에서 Apache 용 Python을 설치하는 방법은 무엇입니까?
- 19. ImageMagick을 Windows에 설치하는 방법은 무엇입니까?
- 20. simplesli.de를 설치하는 방법은 무엇입니까?
- 21. Fabric.js를 설치하는 방법은 무엇입니까?
- 22. 처음 설치하는 방법은 무엇입니까?
- 23. 서버를 확인하는 방법은 무엇입니까?
- 24. WSGI start_response를 가로채는 적절한 방법은 무엇입니까?
- 25. WSGI 미들웨어에서 http 헤더를 추가하는 방법은 무엇입니까?
- 26. wsgi python 앱을 디버깅/로그하는 방법은 무엇입니까?
- 27. WSGI 출력을 UTF-8로 인코딩하는 방법은 무엇입니까?
- 28. 여러 대의 scrapyd 서버를 실행하는 방법은 무엇입니까?
- 29. 서버를 자동으로 검색하는 방법은 무엇입니까?
- 30. WSGI -
+1. 코드가 바뀔 때 mod_wsgi 자동 재로드가 가능합니다 (mod_wsgi 사이트에 예제 코드가 있습니다). – Cameron