5

我在名为 tasks.py 的 celery 模块中定义了以下内容,并导入了 requests 库:

@celery.task
def geturl(url):
    res = requests.get(url)
    return res.content

每当我调用任务(来自tasks.py或REPL)时:

res = geturl.delay('http://www.google.com')
print res.get()

以下是 celery 服务器上的日志条目:

[2012-12-19 18:49:58,400: INFO/MainProcess] 开始新的 HTTP 连接 (1): www.google.com [2012-12-19 18:49:58,594: INFO/MainProcess] 开始新的 HTTP 连接 ( 1): www.google.ca [2012-12-19 18:49:58,801: INFO/MainProcess] 任务 tasks.geturl[48182400-7d67-466b-ba5c-867747cb3974] 成功 0.402245998383s: 无

但是当我通过调用 geturl('http://www.google.com') 以同步方式运行它时,我得到了响应。我已通读文档,似乎无法弄清楚为什么这不起作用。它的主要用途是轮询 API,有人可以解释为什么这不起作用吗?

谢谢!

4

1 回答 1

1

res.content只是一个str例子,你没有理由不能退货。您的问题可能出在其他地方,可能在您的芹菜配置中。


许多配置参数会影响结果的存储方式;看看他们。
您要检查的第一个可能是CELERY_IGNORE_RESULT.

您还应该检查您的结果代理配置。

于 2012-12-20T01:04:58.523 回答