如何检查芹菜结果后端是否正常工作

时间:2016-05-03 23:57:59

标签: python redis celery

我正在使用带有redis的芹菜。

当前的redis用作经纪人和结果后端。

BROKER_TRANSPORT = 'redis'
BROKER_URL = 'redis://domain:8888/0'
CELERY_RESULT_BACKEND = 'redis://domain:8888/0'

我想澄清一些事情

  1. 使用结果后端有什么好处。我的意思是我将通过它使用它来获得
  2. 我怎么能看到它的工作原理。我的意思是将某些东西存储在redis中。存储是永久性的。我该如何查询?存储会随着时间的推移而增长吗
  3. 我可以用芹菜花监视结果后端的东西

1 个答案:

答案 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/