2017-09-28 2 views
0

내가 매분마다 작업을 예약하고 시간 (1 분) 내에 완료 할 수없는 경우. 작업이 대기열에서 대기하고 다음과 같이 진행됩니까? 이런 일이 몇 시간이 지나면 과부하가 걸릴 것입니다. 이런 종류의 문제에 대한 해결책이 있습니까?셀러리가 매분 수행 할 작업을 스케줄하고 시간 내에 완료 할 수없는 경우 어떻게해야합니까?

나는 이것을 위해 비트와 작업자 조합을 사용하고 있습니다. 적은 수의 작업으로 작업을 수행하는 것이 좋습니다. 하지만 큰 데이터베이스의 경우, 이것이 문제를 일으킬 수 있다고 생각합니다.

모든 의견을 환영합니다.

감사합니다.

+0

는, 작업자의 동시성을 높이기보다 근로자를 추가 – ItayB

+0

을하지만 난 세 근로자를 시작하더라도, 난 단 하나의 작업 만 있습니다. 한 작업 만이 근로자들간에 나뉘어 질 수 있습니까? –

답변

0

작업이 대기열에 할당됩니다 (예 : RabbitMQ).

작업자는 대기열 사용자이므로 더 많은 작업자 (또는 동시성이 높은 작업자)가 더 많은 작업을 병렬로 처리 할 수 ​​있습니다.

주기적으로 작업하면 동일한 유형의 메시지가 생성되고 (셀 같음) 셀로리 라우터가 동일한 큐로 라우팅합니다. 대기열의 메시지를 소비하도록 작업자를 설정하면됩니다. I는 네 동시성 -c 4 사용 위의 예에서

celery worker -A celeryapp:app -l info -Q default -c 4 -n [email protected]%h -Ofair 

(당량. (4) 소비자/노동자). 이동 작업자를 시작하여 -Q <queue_name> (예 : default 대기열)과 동일한 대기열에서 소비하도록 할 수도 있습니다.

편집 : 셀러리 (작업자 코드)는 Celery 객체를 시작할 수 있습니다를 사용하여. Celery 생성자에서 당신은 설정하는 당신의 brokerbackend 대한 추가 정보를 원하시면 (셀러리 시스템의 일부로 사용) : 좋아 .. http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#application

+0

좋아요. 그리고 우연히 rabbitmq와 redis로 박자가 같은 일을한다고 생각합니다. 나 맞아? –

+0

rabbitmq을 셀러리'브로커 '로, redis를 셀러리'백엔드'로 사용 하시겠습니까? 당신은 구성에 대해 이야기하고 있습니다 – ItayB

+0

저는 혼란 스럽다고 생각합니다. rabbitmq는 어떻게 사용합니까? 나는 셀러리 작업자와 셀러리 비트 및 redis를 사용했습니다. –

관련 문제