2012-06-07 25 views
1

我正在學習使用芹菜。我從我學會爲止在有些僞功能(在燒瓶中的應用):返回數據的芹菜任務:做錯了或做對了嗎?

def do_a_task_route(): 
    try: 
     result = a_celery_task.apply_async(args=[request_data]) 
     returned = a_celery_task.AsyncResult(result.task_id).get(timeout = 2.0) 
     return jsonify(response = returned['response']) 
    except: 
     return jsonify(response = "some big problem") 

我不是100%肯定這一權利,最好的,但現在對我的作品。看起來結果/返回的行可能是一個「returned = run_task」,其中運行任務執行任務並等待。

我在考慮重構方向 - a)將這兩行(結果/返回)綁定到運行任務的函數中並調用結果,或者b)將「AsyncResult」放入任務本身並返回。

以前做過這件事的人的芹菜方式是什麼?或者只是一些來自調整芹菜的人的反饋。

回答

0

重構此代碼只有在您要在Web應用程序的其他位置重用它時纔有意義。如果只從這裏調用這些函數,則不需要將這幾行代碼放入新函數中。但是如果你打算重用代碼,那麼有一個啓動該任務並返回響應的函數是一個好主意。我並不認爲這是關於Celery的問題,因爲這些重構原則適用於任何代碼。

+0

是和否。我正在從其他撰寫芹菜任務的人那裏獲取反饋,並討論如何重構提供的僞代碼 – blueblank