Celery에서 이미 실행중인 작업을 취소 하시겠습니까?
나는 문서를 읽고 검색했지만 정답을 찾을 수없는 것 같습니다.
이미 실행중인 작업을 취소 할 수 있습니까? (작업이 시작되었으므로 시간이 걸리며 작업을 반쯤 취소해야 함)
Celery FAQ 의 문서에서 찾았습니다.
>>> result = add.apply_async(args=[2, 2], countdown=120)
>>> result.revoke()
하지만 이것이 대기중인 작업을 취소할지 아니면 작업자에서 실행중인 프로세스를 종료할지 확실하지 않습니다. 당신이 비출 수있는 모든 빛에 감사드립니다!
revoke 는 작업 실행을 취소합니다. 작업이 취소되면 작업자는 작업을 무시하고 실행하지 않습니다. 영구 취소를 사용하지 않으면 작업자가 다시 시작한 후에 작업을 실행할 수 있습니다.
http://docs.celeryproject.org/en/latest/userguide/workers.html#worker-persistent-revokes
revoke에는 기본적으로 False 인 종료 옵션이 있습니다. 실행중인 작업을 종료해야하는 경우 종료를 True 로 설정해야합니다 .
>>> from celery.task.control import revoke
>>> revoke(task_id, terminate=True)
http://docs.celeryproject.org/en/latest/userguide/workers.html#revoke-revoking-tasks
Celery 3.1에서는 작업 취소 API 가 변경되었습니다.
Celery FAQ 에 따르면 result.revoke를 사용해야합니다.
>>> result = add.apply_async(args=[2, 2], countdown=120)
>>> result.revoke()
또는 작업 ID 만있는 경우 :
>>> from proj.celery import app
>>> app.control.revoke(task_id)
@ 0x00mh의 대답은 맞지만 최근 셀러리 문서 에서는 그 동안 실행을 시작한 다른 작업을 실수로 종료 할 수 있기 때문에이 terminate
옵션 을 사용하는 것이 " 관리자를위한 최후의 수단 " 이라고 말합니다 . 아마도 더 나은 솔루션은 다음과 결합하는 것 terminate=True
입니다 signal='SIGUSR1'
(작업에서 SoftTimeLimitExceeded 예외가 발생하도록 함).
작업에 대한 다음 옵션을 참조하십시오. time_limit , soft_time_limit (또는 작업자에 대해 설정할 수 있음). 실행 시간뿐만 아니라 apply_async 메소드의 expires 인수 를 참조하십시오 .
또한 불만족 스럽지만 작업을 중지하는 또 다른 방법 (작업 중단)이 있지만 많은 불안정성, 자세한 내용은 http://docs.celeryproject.org/en/latest/reference/celery.contrib.abortable을 참조하십시오. .html
참고 URL : https://stackoverflow.com/questions/8920643/cancel-an-already-executing-task-with-celery
'development' 카테고리의 다른 글
Angular를 사용하여 전 세계적으로 401s 처리 (0) | 2020.09.20 |
---|---|
C ++ 11에서 같은 유형의 람다 벡터를 만들 수없는 이유는 무엇입니까? (0) | 2020.09.20 |
관계형 데이터베이스에서 카탈로그와 스키마의 차이점은 무엇입니까? (0) | 2020.09.20 |
부트 스트랩 드롭 다운 버블 오른쪽 정렬 (오른쪽 푸시 아님) (0) | 2020.09.20 |
ComboBox- SelectionChanged 이벤트에 새 값이 아닌 이전 값이 있습니다. (0) | 2020.09.20 |