尝试学习如何实施芹菜。我有一个工作示例,我做了一个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)
答案 0 :(得分:0)
想出我的问题,芹菜不再在后台运行了。重新启动后,它正常工作。