【发布时间】:2019-06-13 07:56:43
【问题描述】:
尝试通过 celery 运行一些简单的任务。 workerfile 的头部看起来像
from celery import Celery, group
from time import sleep
celery = Celery('workerprocess', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')
通过工作后,我正在尝试读取这样的结果。
jobresult=group(signatureList).apply_async()
while not jobresult.ready():sleep(30) #Line 6
代码在我的桌面上完美运行。配置是 Python 3.6.7 和 4.15.0-20-generic #21-Ubuntu SMP。
当我尝试在我的登台服务器上运行相同的东西(工作节点也在后台运行)时,上面的#Line 6 会引发以下错误。
kombu.exceptions.DecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
从日志看,任务被发送到redis队列,执行正确,但主进程无法对jobresult变量执行任何操作来检索计算的输出。我通过 ping redis-cli 进行了检查,它与 PONG 相呼应。服务器配置(我认为相关的)是 Python 3.5.2 和 4.4.0-89-generic #112-Ubuntu。
由于该任务已经在我的本地桌面上运行,我想这是一个依赖问题。但是该错误并没有提供任何关于我应该安装哪些其他库的线索,无论是使用 PIP 还是 apt-get。我抬头一看,Kombu(不知道它是做什么的,但猜测一些重要的东西)并且它已经安装好了。又怎样 解决这个问题?
这是 redis-cli 对问题的评论的输出。不过,我不确定这意味着什么。
127.0.0.1:6379> lrange celery 0 0
(empty list or set)
127.0.0.1:6379>
【问题讨论】:
-
您能否从连接到您的代理的 redis-cli 发送以下输出?
lrange celery 0 0 -
@2ps 编辑了问题并添加了输出。谢谢。
-
@Della 一个简单的 python 解决方案怎么样? Like this?
标签: redis celery python-3.5 python-unicode kombu