redis 遇到ValueError:在Windows 7上的Django项目中,没有足够的值来解压缩Celery(预期为3,得到0)

nle07wnf  于 7个月前  发布在  Redis
关注(0)|答案(1)|浏览(74)

我一直在我的Windows 7机器上进行Django项目,使用VS-Code作为我的开发环境。最近,我决定合并Celery来处理异步任务。然而,每当我试图检索任务的结果时,我都会遇到ValueError:没有足够的值来解包(预期为3,得到0)。
下面是我如何创建和调用任务的一个片段:

# common/test_tasks.py
from celery import shared_task

@shared_task
def add(x, y):
    return x + y

# In Django shell
from common.test_tasks import add
result = add.delay(4, 6)
print(result.ready())  # Outputs: True
print(result.get())  # Raises ValueError

字符串
我尝试了不同的Celery配置,也尝试了不同的后端和代理。最初,我使用Redis作为代理和后端,但我遇到了同样的错误。我将代理切换到RabbitMQ(pyamqp://guest:guest@localhost//),同时将Redis保留为结果后端。仍然,错误仍然存在。我还尝试将Celery降级到版本3.1.24,但在Windows上遇到了安装问题。
以下是我在settings.py文件中的相关设置:

# settings.py
CELERY_BROKER_URL = 'pyamqp://guest:guest@localhost//'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'


我也检查了日志,但没有什么特别的。任务似乎执行成功,但错误发生在试图获取结果时。
此外,我已经通过多个论坛和文档搜索,但还没有找到一个解决方案,适用于我的特定设置。任何见解或建议,我如何解决这个问题将不胜感激。

b5buobof

b5buobof1#

这个错误通常发生在你试图解包一个不包含任何值的变量时。这意味着,你正在解包的变量在解包时没有存储任何东西。你需要确保在解包之前向它传递了一个值。还要确保大小是否匹配。大小不匹配和缺少值可能是主要原因。

相关问题