2017-06-02 6 views
0

私はprojectにRabbitMQバージョン "3.5.7"とCelery 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のステートメントを切り替えてチェックして、同じ問題が発生しました!

私は何かが間違っているか、これはバグですか?

ありがとうございます!

更新:解決策が見つかりました!

答えて

1

これはかなり面白いバグでした。結果のバックエンドは、SQLやRedisのような永続的なバックエンドでなければならないことがいつか分かりました。

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

そして、セロリ鎖(と和音)完璧に動作:

だから、私はセロリの設定でthis修正を行いました。 お手伝い願います!

関連する問題