찾다

 >  Q&A  >  본문

python - 셀러리 비트 스케줄러 실행 중에 작업을 동적으로 추가하는 방법은 무엇입니까?

django-celery-beat를 사용해 보았습니다. 관리자 백그라운드에서 작업을 추가하면 작업을 동적으로 추가할 수 있습니다
하지만 celery beat를 다시 시작한 후에만 적용됩니다. 다른 방법이 있나요?

某草草某草草2775일 전2199

모든 응답(2)나는 대답할 것이다

  • 为情所困

    为情所困2017-05-18 10:58:10

    동적으로 추가할 수 없으며 비트를 다시 시작해야 합니다.

    이유 #3493

    에 대한 답변을 요청하세요.

    회신하다
    0
  • 高洛峰

    高洛峰2017-05-18 10:58:10

    생각해 볼 수 있는 아이디어가 있습니다. 저는 현재 이 방법을 시도하고 있으며, 돌을 느끼면서 강을 건너려고 하는 단계에 있습니다. Celery는 예약된 작업을 지원하지만 내 요구 사항을 충족하지 않습니다. Linux에서 crontab과 같은 예약된 작업을 동적으로 추가해야 합니다. 또한 django-celery-beat를 살펴보니 구현에 참조할 가치가 없습니다. , 그래서 나는 문서를 읽고 정보를 검색한 후 마침내 방법을 찾았습니다. Celery의 apply_async 함수는 eta 매개 변수를 가지고 있으며 사용이 간단하지만 eta의 ​​힘은 엄청납니다. 예를 들어 2017-05-02 20:0:0에 실행될 작업을 지정하면 다음과 같이 사용할 수 있습니다.

    job.apply_async(args=args, kwarg=kwargs, eta=datetime(2017,5,2,20,0,0))

    거의 사용되지 않나요? 매일 밤 8시에 실행해야 하는 작업이 있는 경우 이 에타 매개변수를 사용하여 이를 달성할 수 있습니다. 의사 코드는 다음과 같습니다:

    으아아아

    여기서 매우 중요한 점은 작업이 성공적으로 실행되었을 때 다음 실행 시간을 계산하는 방법입니다

    . 으아아아

    작업 실행 성공 및 실패에 대한 기능을 제공합니다. 이를 기반으로 다시 작성하면 됩니다. 구체적으로 설명하는 방법은 여러 가지가 있습니다.

    회신하다
    0
  • 취소회신하다