我正在使用兔子版本" 3.5.7"和我的项目中的芹菜4.0.2。
这是在此文件中创建芹菜链的代码:
@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
根本没有被调用。
以某种方式,在执行组后,没有调用其他任务。我已经切换了此处的链条中的语句并检查了同样的问题!
我是在做一些琐碎的事情还是一个错误?
谢谢!
更新:找到解决方案!
这是一个非常有趣的错误!有时花了一些时间来确定结果后端应该是一些持久的后端,例如SQL或Redis。
所以,我在芹菜配置中进行了此修改:
- celeryconfig['CELERY_RESULT_BACKEND'] = 'amqp://'
+ celeryconfig['CELERY_RESULT_BACKEND'] = 'redis://localhost'
,芹菜链(和和弦(正常工作。希望它有帮助!