我有一个简单的芹菜应用程序,其中有两个任务,a_func()
和b_func()
。
启动芹菜工作者后,我正在呼叫a_func.apply_async()
,而我正在运行时正在a_func
呼叫b_func.apply_async()
。
使用'amqp://'作为后端时,一切运行良好。
但是,当使用'rpc://'作为后端时,我遇到了问题。
我正在尝试获取任务的状态和返回值。
对于a_func()
任务,没有问题。但是对于b_func()
,我将永远得到state = 'PENDING'
,而get()
将永远被困住。
我正在使用: 芹菜版本4.3.0。 rabbitmq版本3.5.7作为代理。 python 2.7。 ubuntu版本16.0.4 LTS。
工人cmd:
celery -A celery_test worker --loglevel=inf
芹菜应用
app = Celery('my_app',
backend='rpc://',
broker='pyamqp://guest@localhost/celery',
include=['tasks'])
a_func和b_func任务:
@task
def a_func():
print "A"
b_func.apply_async()
return "A"
@task
def b_func():
print "B"
return "B"