프로덕션 설정을 위해 uWSGI + Nginx로 포장 된 Python 플라스크 API가 있습니다. 4 Nginx 작업자와 작업자 당 1 스레드가 다음과 같이 구성되어 있습니다. 프로세스 = 4 스레드 = 1uWSGI 동일한 JSON 파일에 작성하는 작업자
API 게시를 발행하면 게시물이 코드의 다른 부분에서 json 파일을 쓰고 읽습니다.
병렬로 여러 API 요청을 발행하면 예상대로이 4 명의 Nginx 작업자에게 배포됩니다. 그리고 그들은 진행하고 요청을 병렬로 처리합니다. 때로는 여러 프로세스가 동일한 파일을 읽고 쓰는 중일 때 json ValueErrors가 발생합니다.
이 시나리오를 어떻게 극복합니까? 이것은 내 API 내에서 다중 처리가 아닙니다. 파이썬의 멀티 프로세싱 Lock을 json 업데이트 코드 내에서 사용하면 문제가 해결되지 않습니다.
json 파일을 한 번에 하나의 작업자로 업데이트 할 수 있기를 원합니다. uwsgi 직원들에게 자물쇠를 공유 할 수있는 방법이 있습니까?
json 파일을 "쓰고 읽음"이라고 할 때 디스크를 의미합니까? 독자가 이해할 수있는 경우 독자에게 도움이 될 수 있으며 읽고 쓰는 곳의 예제 코드를 제공하여 더 나은 상황을 제공 할 수 있습니다. – SteveJ