热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解决celeryredis异步错误:File/ling/.virtualenvs/AttributeError:'float'objecthasnoattribute'items'

问题:使用redis和celery执行异步任务时报错Filehomeling.virtualenvsdailyfreshlibpython3.6site-packa

问题:使用redis和celery执行异步任务时报错


File"/home/ling/.virtualenvs/dailyfresh/lib/python3.6/site-packages/redis/_compat.py",
line 123, in iteritems
return iter(x.items()) AttributeError: ‘float’ object has no attribute ‘items’


在这里插入图片描述


原因:

有的说是python 的redis包版本太高了,降低版本:pip install redis==2.10.6
也有说法是3以后的版本和2的版本的兼容问题,不回退版本进行兼容配置亦可。


解决:


进入到报错的目录下:

copy自己报错的目录。

cd /home/ling/.virtualenvs/dailyfresh/lib/python3.6/site-packages/kombu/transport/

找到redis.py文件,进行修改
在这里插入图片描述
修改redis.py文件里面的这行代码: pipe.zadd(self.unacked_index_key, delivery_tag, time())
###改成pipe.zadd(‘self.unacked_index_key’, {delivery_tag:time()})
在这里插入图片描述

执行成功
在这里插入图片描述


处理者一方必须初始化django环境,

# 处理者也需要任务的代码
# 任务处理者本身需要使用到django本身的配置项,在此进行初始化,
# 因为只是用到了celery的worker,并没有启动整个django项目
# 在任务处理者worker一端加以下这4句.在任务发出者端直接执行了django项目,因此不需要加
import os
import django # django环境本身的初始化
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dailyfresh.settings')
django.setup()

否则会报错。
在这里插入图片描述


推荐阅读
author-avatar
刘妤劭明馨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有