烧瓶芹菜redis没有返回价值

时间:2014-08-24 16:39:24

标签: python redis celery

尝试学习如何实施芹菜。我有一个工作示例,我做了一个redis-cli监视器,我看到它获取值并将其返回给浏览器,但当我将示例更改为我自己的东西时,我看到它给了我一个键,但是当我尝试要查看密钥的结果,将其打印出来'打印'testing123',它会挂起并且redis-cli监视器显示无限的'获取芹菜任务'。

... WORKING

celery = make_celery(app)

@celery.task(name="tasks.add")
def add(x, y):
    return x + y

@app.route("/test")
def hello_world(x=16, y=16):
    x = int(request.args.get("x", x))
    y = int(request.args.get("y", y))
    res = add.apply_async((x, y))
    context = {"id": res.task_id, "x": x, "y": y}
    result = "add((x){}, (y){})".format(context['x'], context['y'])
    goto = "{}".format(context['id'])
    return jsonify(result=result, goto=goto)

@app.route("/test/result/<task_id>")
def show_result(task_id):
    retval = add.AsyncResult(task_id).get(timeout=1.0)
    return repr(retval)

不工作......

@celery.task(name="tasks.yieldsomething")
def yieldsomething():
    a = 'test123'
    return a


@app.route("/yield")
def helloworld2():
    res = yieldsomething.apply_async()
    return res.task_id


@app.route("/yield/result/<task_id2>")
def show_result2(task_id2):
    aretval = yieldsomething.AsyncResult(task_id2).get()
    return repr(aretval)

1 个答案:

答案 0 :(得分:0)

想出我的问题,芹菜不再在后台运行了。重新启动后,它正常工作。