2011-06-13 4 views
0

서비스의 API를 통해 다른 서비스에서 사용자의 데이터를 가져 오기 위해 일부 코드를 구현하려고합니다. 제가 설정하려고하는 방식은 모든 간단한 작업이 대기열에 보관되어있는 간단한 요청 프로그램입니다. 한 번에 하나의 작업을 처리하는 것은 컴퓨터 자원을 최대한 활용할 수있는 수준이 아니므로 한 번에 여러 "작업"을 실행하는 프로그램을 구성하는 표준 방법이 궁금합니다. 스레딩이나 대기열에서 작업을 가져오고 수입업자 프로그램의 인스턴스를 시작하는 프로그램을 조사해야합니까? 도와 주셔서 감사합니다.가능한 한 많은 프로그램 인스턴스 실행하기

EDIT : 필요한 경우 다른 언어로 다시 쓸어도되지만 지금은 파이썬입니다.

+0

어떤 언어로 제공됩니까? –

+0

제가 현재 가지고있는 것은 파이썬에 있습니다. 차이가 있다면 뭔가 다른 것으로 옮길 수는 있습니다. – blcArmadillo

+0

병목 현상이란 무엇입니까? 이게 실제로 CPU 바운드 문제입니까? –

답변

1

을 호스트에서 리소스 사용을 최적화하는 데 필요한만큼의 소비자 스레드와 함께 사용하십시오 (미안하지만 매우 모호한 조언이지만 "올바른 번호"는 문제에 따라 다릅니다).

요청이 경량 인 경우 요청을 처리하는 데 한 개의 Producer 스레드 만 있으면됩니다.

여러 프로세스를 시작할 수도 있습니다 - 최선의 선택은 요구 사항에 따라 다릅니다. 그 작업이 효과가 있었는지 또는 '불의와 잊기'인지를 알기 위해 제작자가 필요합니까? 장애 발생시 재시도 논리가 필요합니까? 이 모델에서 동시 사용자 수는 어떻게 유지합니까? 등등.

파이썬의 경우 this을 살펴보십시오.

+0

답장을 보내 주신 Steve에게 감사드립니다. 걱정할 필요가 없었습니다. 정확한 수치의 스레드를 기대하지 않았습니다. 제가하고있는 일은 웹 서비스이므로 내 서비스가 Amazon의 SQS (Simple Queuing Service)에 작업을 추가하도록하는 것이 었습니다. 그러면 SQS에서 서버를 가져와 내 수입 프로그램을 실행하게 할 수 있습니다. 나는 일자리가 성공할 수 있도록해야한다. 그래서 당신은 프로그램의 한 인스턴스를 실행하고 대기열에서 작업을 폴링하고 각 작업에 대한 위협을 설정된 스레드 수까지 실행해야한다고 생각합니까? – blcArmadillo

+0

소비자의 엄격한 통제가 필요하다면 스레드가 별도의 프로세스보다 쉬울 것이라고 생각합니다. 실제로는 두 개의 스레드 유형 일뿐입니다. 그것은 비교적 간단하게 처리 할 수 ​​있습니다. Java와 C#에는 모두 생산자와 소비자를 연결하는 데 사용할 수있는 내장 대기열이 있습니다. –

+0

좋아. 도와 주셔서 감사합니다. 스레딩을 살펴 보겠습니다. – blcArmadillo

관련 문제