2009-09-03 4 views
4

레일즈 응용 프로그램의 다양한 부분에 delayed_job을 사용하려고합니다. 문제는 응용 프로그램의 인스턴스가 여러 개 실행되지만 로컬 작업자가 특정 작업 (예 : 업로드 처리)을 실행해야하는 반면 다른 작업자는 다른 작업을 실행하여 이점을 얻을 수 있다는 것입니다.로컬에서 실행해야하는 작업이있는 여러 컴퓨터에서 delayed_job 사용

로컬/비 로컬 작업 유형에 대한 좋은 접근 방법에 대한 권장 사항이있는 사람이 있습니까?

+0

모든 앱 인스턴스에서 공유 파일 시스템을 사용할 수 있습니까? – Kenny

답변

8

방금 ​​the latest issue of Rails Magazine에서 "delayed_job으로 백그라운드 처리"를 읽었으며 내게 당신이 내장 작업 우선 순위 시스템을 악용 할 수 있다고 생각했습니다.

작업자의 최소 및 최대 우선 순위를 지정할 수 있습니다. 이제 당신의 특별한 로컬 전용 작업 (42)의 우선 순위에게 그 특별한 로컬 전용 작업을 제외한 모든 처리합니다이 노동자 동안이 작업 만 처리 할 노동자 ...

rake jobs:work RAILS_ENV=production MIN_PRIORITY=42 MAX_PRIORITY=42 

있는 경우 :

rake jobs:work RAILS_ENV=production MIN_PRIORITY=0 MAX_PRIORITY=10 

이것은 필요한 것을 성취 할만큼 충분히 유연해야합니다. 그러나 나는 오늘이 기능에 대해서만 배웠고 나 자신을 시도하지 않았기 때문에 자유롭게 인정한다. YMMV!

+0

제안 해 주셔서 감사합니다. 나는 이것을 시도 할 것이다. 물론 여러 개의 로컬 근로자 (각 인스턴스마다 하나씩)를 갖기 위해서는 각 인스턴스에 대해 특정 우선 순위 수준을 설정해야하지만 반드시 수행 할 수 있어야합니다. –

0

구조적으로 모든 클라이언트에서 모든 작업을 실행할 수 있도록 단계를 수행하는 것이 더 효과적 일 수 있습니다.

업로드를 처리하는 것에 대해 언급했는데 클라이언트가 액세스 할 수 있도록 디렉토리를 공유 할 수 있습니까?

+0

그럴 수도 있지만, 네트워크를 통해 대규모 업로드를 처리하지 않는 것이 좋습니다. –

관련 문제