使用django 、redis和celery做异步的邮件发送出现的错误

在使用django 3.0.4、redis 3.2.100和celery 4.6.10进行异步邮件发送时遇到两个错误。错误一是由于redis数据库配置未包含密码,解决方法是在Celery配置中添加密码。错误二是启动celery worker时值打包错误,通过设置环境变量`FORKED_BY_MULTIPROCESSING`为`1`来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用的版本

django3.0.4
redis 3.2.100
celery:4.6.10
windows10

出现的错误

错误一:

RecursionError: maximum recursion depth exceeded while calling a Python object

  1. 问题出现的原因:
    使用:redis数据库的时候数据库有密码,在使用reids做中间人的时候没有配置密码
  2. 解决:配置密码 ,密码为abcd,配置如下
    Celery(‘celery_tasks.tasks’, broker=‘redis://:abcd@127.0.0.1:6379/8’)
错误二:

tasks, accept, hostname = _loc
ValueError: not enough values to unpack (expected 3, got 0)
在这里插入图片描述

  1. 使用celery -A celery_tasks.tasks worker -l info启动任务处理者的时候出现的
  2. 解决方法:
    在任务处理的函数中配置django的配置文件的过城中加上这句:
    os.environ.setdefault(‘FORKED_BY_MULTIPROCESSING’, ‘1’)
    如下:
    在这里插入图片描述
    解决:
    在这里插入图片描述

发送邮件的代码

  1. 视图中的代码 views.py

    		from  celery_tasks.tasks import  send_register_active_email
     		# 1. 加密用户的身份信息,生成激活的token , 3600秒
            serializer =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值