2012-12-27 2 views
1

셀로리 (Django와 통합 됨)부터 시작하겠습니다.셀러리 : 마지막 실행 결과를 사용하는 작업을 예약하십시오.

5 분마다 작업을 예약하고 싶습니다. 이 작업에는 마지막 작업 실행 결과 인 매개 변수가있을 수 있습니다 (컨텍스트로 작동 함).

작업을 연결하고 예약하는 방법을 찾았지만 다음 작업에이 "컨텍스트"를 제공하는 올바른 방법을 찾을 수 없습니다. 나는 셀러리의 문서에 뭔가를 놓친 경우 죄송합니다

.. 당신의 도움에 대한

감사합니다, 아르노.

답변

0

이 문제에 대해 일부 영구 저장소를 사용하는 것이 더 좋을 것이라고 생각합니다. 하지만 당신은 eta 또는 countdownparameters를 사용하여 셀러리의 지연 태스크를 실행할 수 있습니다

ETA (도착 예상 시간) 특정 날짜와 귀하의 작업이 실행됩니다있는 가장 빠른 시간입니다 시간을 설정할 수 있습니다

. 카운트 다운은 eta를 앞으로 초 단위로 설정하는 지름길입니다.

+0

안녕하세요. Alex, 답변 해 주셔서 감사합니다. 지금은 결과를 저장하는 데 Redis DB를 사용하고 있습니다. 당신은 그것을 영속적 인 것으로 간주합니까? η/카운트 다운을 이해하지만 다음 작업에서 마지막 결과를 검색하는 방법을 볼 수 없습니까? 도움 주셔서 감사합니다. –

+0

@ arnaud.breton 제 아이디어는 결과를 매개 변수로 작업에 전송하는 것이 었습니다. 계산이 완료된 후에는 작업 내에서 계산 결과를 사용하여 지연된 작업을 예약하십시오. 저장소 (예 : Redis) 및 주기적 작업을 사용하는 것이 더 신뢰할 수 있습니다. –

0

나는 alex vasi의 솔루션을 구현했다.

먼저 각 작업에 동일한 ID를 사용하려고했지만 때로는 작업이 마지막 결과를 검색 할 수 없습니다.

콜백 방식으로 이동 했으므로 작업이 끝날 때마다 정확한 ETA와 함께 다른 작업을 시작하고 마지막 결과를 인수로 전달합니다. 꽤 잘 작동합니다.

오류 처리의 경우 task_failure signal에 메소드를 첨부했습니다.

관련 문제