尝试学习如何实现芹菜。我有一个工作的例子,我做一个redis-cli监视器,我看到它得到的值,并返回到浏览器,但当我把例子改变为我自己的东西,我看到它给了我一个关键,但当我试图查看关键的结果,期望它打印"testing123",它挂起和redis-cli监视器显示无尽的"得到的芹菜任务。
工作……
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)
找到我的问题了,芹菜不再在后台运行了。重新启动后,它可以正常工作。