2017-11-13 12 views
-1

이 주제에 대한 연구를 시작해야 할 곳이 어디인지 알지 못하기 때문에 (예 : 키워드 사용) 누군가가 나를 돕기를 바랍니다. 방향.한 번에 한 사람을 위해 프로세스를 실행하기 위해 대기열을 생성해야합니다.

.NET MVC 응용 프로그램이 있습니다. 이 애플리케이션에서 사용자는 데이터 레이어가있는 zip 파일을 업로드하고 해당 데이터 레이어는 애플리케이션에서 호출하는 python 스크립트의 입력으로 사용됩니다. 데이터베이스 커서의 특성 (누구나 익숙한 사람이라면 ArcGIS Enterprise 지오 데이터베이스)로 인해 커서가 데이터베이스에서 독점적 인 잠금을 수행 할 때 한 번에 한 명씩 python 스크립트를 실행할 수 있습니다 (이 방법은 없습니다). 두 사람이 동시에이 웹 응용 프로그램을 사용하려고 시도하는 매우 드문 경우로, 사람들을 대기열에 넣어서 파이썬 스크립트가 첫 번째 사람을 위해 완료 한 다음 다음 사람의 데이터 세트에서 시작해야합니다. 어디서부터 시작해야합니까? 또는이 주제에 대한 검색어를 공식화하기 위해 어떤 단어를 제공 할 수 있습니까?

+1

일부 잠금/뮤텍스가있는 정적/단일성은 대기열 접근 방식보다는 단일 인스턴스에 대한 사용 가능성을 제한하기위한 방법 중 하나입니다. 요청을 큐에 넣고 한 번에 하나씩 처리해야하는 경우 이것을 SignalR과 결합 할 수 있습니다. 희망이 도움이됩니다. – Viju

답변

1

더 많은 기술 특정 솔루션이 올 것입니다. 그러나 처음보기에서 우선 순위 큐 스타일 처리를 사용할 수 있습니다.

테이블을 생성하고 거기에 새 요청을 대기열에 넣고 (삽입) 간단히 처리 할 수 ​​있습니다 (대기열에서 제외). 또는, RabbitMQ

그래서

, 새 zip 파일이 올 때마다, 저장소에

  • 업로드와 같은 높은 수준의 프레임 워크를 사용
  • 삽입 큐에 새로운 기록
  • 에서 첫 번째 항목을 가져 오기
  • 프로세스

두 번째 사람이 새 파일을 업로드하면 대기열 테이블을 확인할 수 있습니다. 마지막 항목이 처리 중임을 알리고 클라이언트에 알리면 스크립트가 대기하고 처리됩니다.

클라이언트의 고유 ID를 생성하는 것이 분명하고, 동시에 여러 개의 업로드가있는 경우 우선 순위와 스크립트를 혼합하지 않아도됩니다.

+0

고맙습니다. 우선 Queue 클래스를 살펴 보았습니다. 우선 순위가 없기 때문에, 먼저 물건을 업로드 한 사람이 먼저 처리됩니다. 여러 사용자가 단일 대기열에서 대기열에 넣기/대기열에서 빼는 방법에 대해 마음을 감싸는 데 어려움을 겪고 있습니다. 누군가가 데이터를 업로드하고 대기열에 항목을 추가 할 때 응용 프로그램에서 Queue 클래스를 인스턴스화 할 수 있지만 두 번째 사용자가 데이터를 업로드하고 업로드하는 경우 다른 별도의 Queue 클래스를 인스턴스화하게됩니다. 당신이 언급하는 "대기열 테이블"이 들어오는 곳입니까? – Stuff

+1

싱글 톤을 구현하는 방법을 살펴 보거나 SQL 서버 등의 지속성 스토리지 어딘가에 큐 저장소를 만들어 소비해야합니다. 이러한 개념을 모르는 사람이라면 더 많은 상급 개발자의 지원을 받거나 다이빙하기 전에 이러한 개념을 배우는 데 시간을 투자 할 것을 적극 권장합니다. 어쨌든 중도에 있고 너무 오래 걸리지 않아야합니다. –