셀러리 subtask를 이용하여 task 안에 task를 만들어 처리해보려고 합니다. 원래

 
Jacob Seongwoon Lee

셀러리 subtask를 이용하여 task 안에 task를 만들어 처리해보려고 합니다.
원래 하나의 task로 짜서 정상동작 하는 것을 루프로 처리하는 부분에서 다시 한 번 subtask로 수행시키려 하는데요. 간단하게 슈도코드로 작성하면..

@task
def analysis(self):
batches = […]
users = […]
chord(get_feed.s(self, batch, user) for batch, user in zip(batches, users))
get_feed task에서 만든 변수를 활용
return task_id

@task
def get_feed(self, batch, batch_id):
API 요청을 통한 대량의 feed 수집 진행
리턴해야되는 데이터는 없음, 전부 parent 변수에 저장됨.

이런 식인데요. task를 수행시키면 그냥 쑤욱 통과해서 task_id를 뱉어버리고 마네요.

[2014-04-28 16:26:57,790: INFO/MainProcess] Received task: tasks.analysis[64423ce1-cc63-4e30-962a-b022301fc5ad]
[2014-04-28 16:26:57,808: INFO/MainProcess] Task tasks.analysis[64423ce1-cc63-4e30-962a-b022301fc5ad] succeeded in 0.0147866129992s: u’64423ce1-cc63-4e30-962a-b022301fc5ad’

제가 원하는 것은 subtask를 전부 수행하고, subtask들이 완료가 될 때, 그 다음 명령을 수행하는 것인데 말이죠.

Advertisements