我在项目中使用的是RabbitMQ版本"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。
不知何故,在执行组之后,不会调用其他任务。我已经切换了链这里中的语句并进行了检查,同样的问题也会发生!
我是不是做错了什么小事,还是这是个小错误?
谢谢!
更新:找到解决方案!
发布于 2017-06-02 16:28:01
这是一个很有趣的错误!花了一段时间才发现结果后端应该是一些持久的后端,比如SQL或Redis。
因此,我在芹菜配置中进行了这修改:
- celeryconfig['CELERY_RESULT_BACKEND'] = 'amqp://'
+ celeryconfig['CELERY_RESULT_BACKEND'] = 'redis://localhost'还有,芹菜链(和弦)工作得很完美。希望能帮上忙!
https://stackoverflow.com/questions/44327977
复制相似问题