pyD*_*Dev 5 python rabbitmq celery
我有一个简单的 celery 应用程序,有两个任务,a_func()和b_func(). 启动 celery worker 后,我调用a_func.apply_async(), 和a_func,当在 worker 上运行时调用b_func.apply_async().
使用“amqp://”作为后端时,一切正常。但是,当使用'rpc://'作为后端时,我遇到了问题。我正在尝试获取任务的状态和返回值。对于a_func()任务,没有问题。然而,b_func()因为我得到了state = 'PENDING'永远,并且get()永远被困住了。
我正在使用:芹菜版本 4.3.0。rabbitmq 版本 3.5.7 作为代理。蟒蛇 2.7。ubuntu 版本 16.0.4 LTS。
工人命令:
celery -A celery_test worker --loglevel=inf
Run Code Online (Sandbox Code Playgroud)
芹菜应用:
app = Celery('my_app',
backend='rpc://',
broker='pyamqp://guest@localhost/celery',
include=['tasks'])
Run Code Online (Sandbox Code Playgroud)
a_func 和 b_func 任务:
@task
def a_func():
print "A"
b_func.apply_async()
return "A"
@task
def b_func():
print "B"
return "B"
Run Code Online (Sandbox Code Playgroud)