2013-04-28 5 views
1

동일한 기능에서 여러 셀러리 작업을 만들고 싶습니다. 작업 장식 자에게 전달하는 매개 변수가 다릅니다. 내 시스템에서 유료 및 무료 계정에 대해 다른 시간 초과를 설정하려고한다고 가정 해 봅시다.셀러리가 같은 함수에서 여러 작업을 만듭니다.

def _update(x, y): 
    ...  

update_free = task(soft_time_limit=300, time_limit=305)(_update) 

update_paid = task(time_limit=1800)(_update) 

을하지만 update_paidupdate_free도이 작업으로 등록되어 있는지 로그에서 볼 :

나는 다음과 같은 방법으로 작업 장식을 적용하는 트릭을 할 것이라고 기대했다. 대신 어떤 이유로 _update이 작업으로 등록됩니다.

셀러리/장고 셀러리가 왜 그런지 모르겠지만, 나에게는 꽤 모호한 것 같습니다. 누구든지 문제를 해결하는 방법을 알고 있습니까? 감사합니다. .

답변

1

셀러리의 task 데코레이터 작업을 등록 할 때 장식 된 함수의 이름을 사용하며,이 이름은 함수가 정의 "_update"로 설정됩니다 : 당신은 장식에 작업의 이름을 지정할 수 있습니다

>>> def _update(x, y): 
...  pass 
... 
>>> _update.__name__ 
    > '_update' 
>>> update2 = _update 
>>> update2.__name__ 
    > '_update' 

비록 :

update_free = task(name='update_free', soft_time_limit=300, time_limit=305)(_update) 
update_paid = task(name='update_paid', time_limit=1800)(_update) 
+0

그래, 나도 알아 냈어! – dragoon

관련 문제