이것은 나에게 정말로 골칫거리입니다. 나는 장고와 파이썬 2.7에서 실행되는 전보 봇을 가지고있다. 개발하는 동안 나는 django sslserver를 사용했고 모든 것이 잘 동작했다. 오늘은 nginx에서 gunicorn을 사용하여 배포했으며 코드는 내 localhost에서와 매우 다릅니다. 나는 이미 사용자를 확보하기 시작 했으므로 가능한 모든 것을 시도했지만 모두 쓸모가 없습니다. 대부분의 파이썬 객체는 요청이있을 때마다 상태를 잃어 버리고 이것이 문제의 원인이 될 수 있습니다. 내가 사용하는 라이브러리에는 전보 사용자와의 대화를 처리하는 클래스가 있으며 대화 상태는 클래스 인스턴스에 저장됩니다. 때로는 새로운 요청이 오면 그 값은 이미 손실됩니다. 아무도 이것을 직면 했습니까? 문제를 빨리 해결할 수있는 방법이 있습니까? 중요한 상황에 처해 있으며 빠른 해결책이 필요합니다.nginx에서 요청할 때마다 파이썬 객체가 상태를 잃습니다.
1
A
답변
2
Gunicorn은 프리 포킹 작업자 모델을 가지고 있습니다. 즉,로드의 하위 집합을 처리하는 여러 가지 독립된 하위 프로세스를 시작합니다.
서비스 제공과 관련된 모든 스레드에서 내부 응용 프로그램 상태가 일관성을 유지하려면 모든 스레드가 동일한 프로세스 내에 있는지 확인하기 위해 작업자 수를 1로 낮추어야합니다. 물론
, 이것은 임시 변통 - 당신은 응용 프로그램을 백업 여러 대의 서버를 생산 부하를 실행하거나 가지고 솔루션을 확장 할 수 있도록하려면, 당신은 시스템을 수정하는 것으로 할 것 프로세스 내에서 사용 가능한 컨텐트에 의존하기보다 관련 상태를 공유 된 저장소에 유지하는 것.
관련 문제
- 1. 파이썬 unittest에서 요청할 때마다 쿠키를 지우는 시뮬레이션하기
- 2. latest_receipt 객체가 Apple에서 요청할 때마다 변경되는 이유는 무엇입니까?
- 3. 요청할 때마다 db 연결을 닫아야합니까?
- 4. JavaScript 객체가 함수에서 참조를 잃습니다.
- 5. 직렬화 된 객체가 데이터를 잃습니다
- 6. DrawerLayout이 방향 변경시 상태를 잃습니다.
- 7. PassportJS를 사용하여 요청할 때마다 사용자를 deserialize해야합니까?
- 8. 서브셋 설정시 xts 객체가 xts 클래스를 잃습니다
- 9. 웹 API를 사용하여 요청할 때마다 토큰을 전달합니다.
- 10. 요청할 때마다 Jwt 토큰을 확인 하시겠습니까?
- 11. Django에서 요청할 때마다 쿠키 헤더 값을 변경하십시오.
- 12. 토네이도를 사용하여 요청할 때마다 초기화하지 않는 방법
- 13. 프리즘을 사용하여 모듈을 요청할 때마다 함수를 실행해야합니다.
- 14. REST API에는 요청할 때마다 암호와 로그인이 필요합니까?
- 15. 앱으로 돌아갈 때 SFSafariViewController 상태를 잃습니다
- 16. 테이블 뷰에서 새 행을 요청할 때마다 NSFetchedResultsController가 DB를 호출합니까?
- 17. 파이썬 유닛 테스트는 객체가
- 18. 파이썬 객체가 이전의 데이터를 유지합니까?
- 19. nginx에서 파이썬 로그 파일을 파이프하는 방법
- 20. 자바에서 생성자가 호출 될 때마다 객체가 생성됩니까?
- 21. 돌연변이가 발생할 때마다 새로운 객체가 생깁니 까?
- 22. 파이썬 메카니즘은 두 번째 열림에서 속성을 잃습니다.
- 23. jquery 함수를 통과 한 후 DOM 객체가 참조를 잃습니다.
- 24. 확장 DOMElement 객체가 다른 문서로 가져올 때 해당 속성을 잃습니다.
- 25. 새 이메일을받을 때마다 문제 상태를 변경하십시오.
- 26. 자바에서 키보드의 입력을 요청할 때마다 배열로부터 입력을 받아들이는 방법
- 27. 요청할 때마다 새 Cloud Spanner 클라이언트 인스턴스를 만들어야합니까?
- 28. Django REST 프레임 워크 JWT는 요청할 때마다 데이터베이스에서 사용자를 확인합니다.
- 29. 다른 도메인에서 스크립트를 요청할 때마다 Internet Explorer가 새 세션을 생성합니다.
- 30. ASP.NET MVC에서 요청할 때마다 정적 변수를 다른 요청과 공유합니까?
gunicorn은 프리 포크 작업자 모델을 사용합니다. Prefork. ** 당신은 독립적 인 프로세스 **를 가지고 있음을 의미합니다. 독립적 인, 그들은 자신의 상태를 가지고 있으며, 서로 기억을 공유하지 않습니다. 중앙 저장소 (redis, & c)와 통신 할 수있는 시스템을 구축하지 않은 경우 드로잉 보드로 돌아 가야합니다. –
@ Charles Duffy, 데이터베이스가 있지만 사용중인 라이브러리는 상태를 저장하는 것 같습니다. 또한, 나는 gunicorn에 대해이 사실을 모릅니다. – Ken
잠시 동안 작업자 수를 1로 줄일 수 있습니다. 성능이 저하되지만 전혀 작동하지 않는 서비스보다 나은 것입니다. –