2016-06-23 80 views
0

我已經定義了一個任務,芹菜這樣的任務的狀態:芹菜:如何設置

@app.task() 
def my_task(): 
    # Do things... 

我使用的是花,所以我想看看任務的最終狀態,根據一些我創建的規則:

if condition_1: 
     return task_status_success 
    elif condition_2: 
     return task_status_fail 

我該怎麼做?

我見過一些人做這樣的事情:

class AbstractTask(Task): 
    abstract = True 

    def __init__(self): 
     self.last_error_log = ErrorLog(logger) 
     Task.__init__(self) 

    def _task_error(self, message): 
     logger.error(message) 
     self.update_state(state=states.FAILURE) 
     raise Exception(message) 

但這種方法似乎定義類的任務,而不是功能。

有關如何手動設置定義爲函數的Celery任務的狀態的任何幫助?

回答

1

要使用你看到了使用一個抽象類中的方法,你只需要通過類作爲base到你的裝飾:

@app.task(base=AbstractClass, bind=True) 
def my_task(self): 
    pass 

bind=True將允許您使用self訪問類的成員。