Django+celery+redis 异步发送邮件功能
系统==win10 Django==2.1 redis== 3.2.0 celery==4.2.1 由于目前是在开发过程中,所以测试环境为win10。 开发需求:当用户在页面点击“下载时”,系统会通过用户session获取用户邮箱,使用系统设置的邮箱发送给用户包含指定文件的邮件。 问题1:views.py中,除非系统将邮件已成功发送,才会return页面给用户,由于文件大小和网络环境的问题,发送时间可能较长,不可能让用户长时间等待。 问题2:系统发送邮件的主进程进行时,用户和其他人都无法做新的操作。 解决办法:使用celery将发送邮件的任务转成异步执行,无需用户等待。使用redis作为队列,将异步任务进行缓存。不影响服务器主进程。 开始解决之路: 部署环境 pip3 install redis (这里首先需要下载redis安装,下载链接 https://github.com/MicrosoftArchive/redis/releases ,进入后下载 Redis-x64-3.2.100.zip ),启动命令: 进入解压后的文件 输入:redis-server.exe redis.windows.conf pip3 install celery 目录结构见下图: 将创建两个py文件,tasks.py和celery.py。 tasks.py 内容 from django.conf