我在名为 tasks.py 的 celery 模块中定义了以下内容,并导入了请求库:
@celery.task
def geturl(url):
res = requests.get(url)
return res.content
Run Code Online (Sandbox Code Playgroud)
每当我调用任务(来自 tasks.py 或 REPL)时:
res = geturl.delay('http://www.google.com')
print res.get()
Run Code Online (Sandbox Code Playgroud)
以下是 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] Task tasks.geturl[48182400-7d67-466b-ba5c-867747cb3974] 0.40228459983 成功
但是当我通过调用 geturl('http://www.google.com') 以同步方式运行它时,我得到了响应。我已经通读了文档,似乎无法弄清楚为什么这不起作用。它的主要用途是轮询 API,有人可以解释为什么这不起作用吗?
谢谢!
res.content这只是一个str例子,您没有理由不能退货。您的问题可能出在其他地方,可能出在您的芹菜配置中。
许多配置参数都会影响结果的存储方式;看看他们。
您想要检查的第一个可能是CELERY_IGNORE_RESULT.
您还应该检查您的结果代理配置。
| 归档时间: |
|
| 查看次数: |
3002 次 |
| 最近记录: |