2017-06-02 96 views
0

我在我的project中使用RabbitMQ版本「3.5.7」和芹菜4.0.2。執行組後,芹菜鏈不執行任務

這是在this file創建芹菜鏈的代碼:

@app.route('/transcodeALL', methods=['POST']) 
def transcodeToALL(): 
    if request.method == 'POST': 
     # We will do something like this to simulate actual processing of a video 
     transcoding_tasks = group(
      transcode_1080p.signature(queue='tasks', priority=1, immutable=True), 
      transcode_720p.signature(queue='tasks', priority=2, immutable=True), 
      transcode_480p.signature(queue='tasks', priority=3, immutable=True), 
      transcode_360p.signature(queue='tasks', priority=4, immutable=True) 
     ) 
     main_task = chain(
      common_setup.signature(queue='tasks', immutable=True) 
      transcoding_tasks, 
      end_processing.signature(queue='tasks', immutable=True), 
     ) 
     main_task.apply_async() 
     return 'Video is getting transcoded to all dimensions!' 
    else: 
     return 'ERROR: Wrong HTTP Method' 

這裏,common_setup被調用,然後將組transcoding_tasks也被後調用。但是,end_processing根本不被調用。

不知何故,該組執行後,沒有其他任務被調用。我已將鏈條here中的報表切換並進行檢查,併發生相同的問題!

我正在做一些瑣碎的事情嗎?或者這是一個錯誤?

謝謝!

UPDATE:找到了解決方案!

回答

1

這是一個非常有趣的錯誤!花了一些時間才能發現後端應該是一些持久的後端,比如SQL或Redis。

所以,我做了芹菜中配置this修改:

- celeryconfig['CELERY_RESULT_BACKEND'] = 'amqp://' 
+ celeryconfig['CELERY_RESULT_BACKEND'] = 'redis://localhost' 

而且,芹菜鏈(和絃)完美地工作。 希望它有幫助!