我正在使用带有redis的芹菜。
当前的redis用作经纪人和结果后端。
BROKER_TRANSPORT = 'redis'
BROKER_URL = 'redis://domain:8888/0'
CELERY_RESULT_BACKEND = 'redis://domain:8888/0'
我想澄清一些事情
答案 0 :(得分:6)
结果后端正是它听起来的样子,它只是存储来自任务的结果。
让我们说您有以下任务实际返回一个值。
@task
def sum(x, y):
return x + y
在某些时候,你称之为此任务。如果你没有结果后端,get()将抛出一个错误(或警告,我忘了哪个)。如果您确实有后端结果(并且假设它已正确配置),task.get()
将轮询您的redis-backend以获取与task_id
相关联的task
的结果,然后返回它通过你指定的任何序列化器给你。
from tasks import sum
task = sum.delay(3, 4)
task.get()
您可以看到它只是在您发送给代理的任务上调用get()
(并等待完成)。您可以阅读有关使用celery results from the official documentation的更多信息。
原则上你可以从redis-cli中调查你的redis数据库,但是我没有理由这样做。您可以通过转到其中一个实际任务详细信息视图并查看"结果"来查看花中的结果。 "基本任务选项"下的字段表。例如http://flower.myserver.com/task/