使用rpc://作为celery应用程序的后端时出现问题(而amqp://后端有效)

时间:2019-07-17 14:10:10

标签: python rabbitmq celery

我有一个简单的芹菜应用程序,其中有两个任务,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"

0 个答案:

没有答案