2014-10-18 1 views
4

저는 백그라운드 태스크를 실행하기 위해 파이썬에서 Celery를 사용하고 있으며 태스크 구현에서 샐러리 태스크 정의를 분할 할 수 있는지 여부에 대한 확실한 답을 찾을 수 없었습니다.Celery 태스크의 정의 및 구현을 분할 할 수 있습니까?

예를 들어, 아래 정말 간단한 작업을 :

@celery_app.task 
def add_numbers(num1, num2): 
    return num1 + num2 

정의 및 구현 즉 발신자 수입이 모듈은 add_numbers를 호출 할 때 같은 파일에있는, 정의와 구현 모두 가져옵니다.

이 경우별로 나쁘지 않습니다. 하지만 제 작업은 호출자가 필요로하지 않는 여러 모듈과 패키지를 가져와 좀 더 복잡해졌으며 호출자를 막고 싶습니다.

그래서 셀러리가이 방법을 제공합니까? 아니면 프레임 워크에 반대합니까? 이것도 문제입니까?

나는이 질문을 보았다. Celery dynamic tasks/hiding Celery implementation behind an interface 인터페이스 구현을 넘어서지만, 2 년이 넘는다. 많은 시간을 바꿔야한다.

답변

2

불러 오기 작업을 호출하지 않고 signatures이라는 기능이 있습니다. Celery 앱 인스턴스가 있어야 사용할 수 있습니다.

sig = celery_app.signature('myapp.add_numbers', args=(1,2)) 
sig.delay() 
관련 문제