我正在尝试将 celery 和 rabbitMQ 组合用于异步任务调度,下面是我在 Pycharm IDE 上尝试的示例程序....一切似乎都在工作,但我看不到任务的返回值。
我也在监控rabbitMQ管理控制台,但是还是看不到任务的返回值。
我不明白我哪里出错了,这是我第一次尝试 celery 和 RabbitMQ
我创建了一个包含 2 个示例任务(分配了适当的装饰器)并为每个任务返回一个值的 tasks.py 文件。
我还启动了 RabbitMQ 服务器(使用 {rabbitmq-server start
} 命令)。
然后我启动了 celery worker,使用命令:{celery -A tasks --loglevel=info
}
现在,当我尝试使用 delay() 方法执行这些任务时,命令 ({reverse.delay('andy')
}) 正在运行,我得到了类似这样的东西,但我看不到返回值。
from celery import Celery
app = Celery('tasks', broker= 'amqp://localhost//', backend='rpc://')
@app.task
def reverse(string):
return string[::-1]
@app.task
def add(x, y):
return x + y
最佳答案
好吧,我已经弄清楚了这个问题...它表明最新版本的 celery 与 Windows 不兼容。为了解决这个问题,我安装了“eventlet”包,剩下的由它来处理。
需要注意的是,我们需要使用 eventlet 支持启动 celery worker,PFB 命令:
celery -A <module_name> worker -loglevel=info -P eventlet
关于python - 无法看到在 celery-rabbitMQ 组合中执行的任务的输出消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55886263/