【Django】celery收到发送邮件任务没反应(无限等待)- 阿里云ECS-CentOS7

15 篇文章 0 订阅
7 篇文章 1 订阅

一、起因:celery收到发送邮件任务没反应(无限等待)- 阿里云ECS-CentOS7

最近用阿里云部署Django项目,用celery处理发送邮件任务,celery服务已经启动,能Received task,但是收到任务后无限等待,没有进行Task xxx succeeded in.

  1. 我一直以为是celery没有配置好的问题,百度各种无果
    以为是代码问题?看了又看,没问题啊、、、以为是 时区问题?AsiaShanghai? 没有效果。。。。。。

  2. 尝试放弃celery,开启一个线程去处理发送邮件的任务,发现线程一直在等待处理任务???那么就不是celery的问题了,是发送邮件的问题。

原来是如此,这damn的亲爱的阿里云25端口给禁用了,导致无法发送邮件!!!

二、解决无法发送邮件的问题

Django项目的settings.py文件添加代码:

''' 阿里云Django邮件服务器配置 '''
# 其他配置不变,修改:
DEFAULT_FROM_EMAIL = 'xxxx@163.com'	# 默认邮件发送方:和发送邮箱的用户名相同
EMAIL_PORT = 465	# 修改Email端口为465或587,二选一,用不了换另一个
EMAIL_USE_SSL = True	# 使用SSL
# EMAIL_USE_TSL = False		# 禁用TSL

配置之后,再次尝试!!!

启动发送邮件的celery任务

Linux启动celery任务

celery -A celery_tasks.tasks worker -l info

Windows启动celery任务

celery -A celery_tasks.tasks worker -l info -P eventlet
发送邮件测试

在项目路径下输入python3,进入python3交互环境。

[root@banana ~]# cd 你的项目路径
[root@banana 你的项目路径]# python3

>>> from celery_tasks.tasks import send_register_active_email
>>> to_email = 'xxxx@qq.com'
>>> username = 'helloworld'
>>> token = 'thistoken'
>>> send_register_active_email.delay(to_email, username, token)
<AsyncResult: e5122c2a-75b9-4b6a-bccf-650f5e8c41f2>
测试成功!
[2020-06-01 13:37:46,114: INFO/ForkPoolWorker-1] Task celery_tasks.tasks.send_register_active_email[c43f36a7-3c41-45a0-bac0-18b059c5ccdb] 
succeeded in 3.290678153047338s: None
SSL和TSL的Django文档
EMAIL_USE_TLS(默认:False)

在与SMTP服务器通信时,是否使用TLS(安全)连接。这用于显式TLS连接,通常在端口587上。

EMAIL_USE_SSL(默认:False)

在与SMTP服务器通信时,是否使用隐式TLS(安全)连接。在大多数电子邮件文档中,这种类型的TLS连接称为SSL。它通常在端口465上使用。

注意: EMAIL_USE_TLS/EMAIL_USE_SSL 是互斥的,最多只能设置一个为True。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值