异步任务--celery发送邮件

安装两个python包:

pip install celery==3.1.25

pip install django-celery==3.2.1

   pip install celery-with-redis==3.0

在你的应用下面创建名为task.py,用于封装耗时任务

#settings中配置邮箱

  1. EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
  2. EMAIL_USE_TLS = False
  3. EMAIL_HOST = 'smtp.163.com'
  4. EMAIL_PORT = 25
  5. EMAIL_HOST_USER = 'xxxxx@163.com'
  6. EMAIL_HOST_PASSWORD = 'xxxxx'
  7. EMAIL_FROM = 'xxxxx@163.com'
  8.  
  9. import djcelery
  10.  
  11. djcelery.setup_loader()
  1. # 配置redis :密码@ip:端口/指定数据库
  2. BROKER_URL = 'redis://:pzl123456@47.106.37.80:6379/0'
  3. CELERT_IMPORTS = ('users.task')

python manage.py migrate

生成celery需要的表

将名为celery.py文件加入到同工程目录同名的目录下,代码如下:

  1. from __future__ import absolute_import
  2.  
  3. import os
  4. from celery import Celery
  5. from django.conf import settings
  6.  
  7. app = Celery('portal')
  8.  
  9. app.config_from_object('django.conf:settings')
  10. app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
  11.  
  12. @app.task(bind=True)
  13. def debug_task(self):
  14. print('Request: {0!r}'.format(self.request))

修改与工程目录同目录下的__init__.py文件

  1. from newblog.celery import app as celery_app

把发送邮件的函数写到task.py文件中

用装饰器装饰这个函数

已启动redis

然后启动worker

linux下: 切换到项目下  python manage.py celery worker --loglevel=info

linux要用  nohup执行这个worker工人

在视图函数中调用

最后注册发送邮件调用

工人控制台显示

15 Django之Celery发送邮件的更多相关文章

  1. Django使用Celery进行异步任务

    Celery Celery是一个功能完备即插即用的异步任务队列系统.它适用于异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用 ...

  2. django集成celery

    Celery是一个基于分布式消息传递的开源异步任务队列,在django实际应用场景下,往往有一些较为耗时,但并不需要返回值的任务, 例如发送邮件,更新我们自己的统计数据库,这时我们可以将这些任务交由c ...

  3. django使用celery进行耗时任务的优化

    # 原创,转载请留言联系 在用django做项目的时候,做到注册模块时,需要发送短信验证码.本来简简单单的做好了,后来优化的时候发现,发送短信验证码的时候需要一点时间,在这个时间之内程序是阻塞的,用户 ...

  4. Django中Celery的实现介绍(一)

    Django中Celery的实现 Celery官网http://www.celeryproject.org/ 学习资料:http://docs.jinkan.org/docs/celery/ Cele ...

  5. django集成celery之callback方式link_error和on_failure

    在使用django集成celery进行了异步调度任务之后,如果想对失败的任务进行跟踪或者告警,怎么做? 这里提供一个亲测的方法. 1.任务callback 假如你想在任务执行失败的时候,打印错误信息并 ...

  6. django配置celery

    官网详尽的django结合celery的配置步骤 在django项目settings.py所在的目录中新建一个celery.py,内容如下 from __future__ import absolut ...

  7. Django中Celery http请求异步处理(四)

    Django中Celery http请求异步处理 本章延续celery之前的系列 1.settings配置 2.编写task jib_update_task任务为更新salt jid数据 3.url设 ...

  8. 第三百二十一节,Django框架,发送邮件

    第三百二十一节,Django框架,发送邮件 全局配置settings.py EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' ...

  9. django、celery异步发邮件

    django.celery异步发邮件 django自带的send_mail发邮件功能执行发邮件功能会因为网络的原因造成花费的时间过长,为了解决这个问题,可以用celery + redis代替 安装包: ...

随机推荐

  1. <c:if test="${uns ne ‘admin’}">

    类别 运算符 算术运算符 + . - . * . / (或 div )和 % (或 mod ) 关系运算符 == (或 eq ). != (或 ne ). < (或 lt ). > (或 ...

  2. Example config file /etc/vsftpd.conf

    # Example config file /etc/vsftpd.conf # # The default compiled in settings are fairly paranoid. Thi ...

  3. Install Virtualbox on CentOS7---(後話,最終還是沒有用virtualbox做VM server ,感覺只適用于桌面)

    參考: https://wiki.centos.org/zh-tw/HowTos/Virtualization/VirtualBox cd /etc/yum.repos.d wget http://d ...

  4. 工具 --- Git使用

    创建远程仓库 Github 首相在GitHub网站创建一个仓库:右上角加号➕,选择new repository 然后创建编辑仓库:名称.说明.是否公开.语言.分支风格等信息.然后创建. 复制仓库地址 ...

  5. windows下exfat无法写入怎么修复?

    为了能够实现mac与windows文件共享,把移动硬盘格式化为exfat了,可是在osx中放入文件后,在windows上紧进行读取写入时出现错误,提示使用chkdsk进行修正,下面是修正步骤. 方法/ ...

  6. (长期更新)【机器学习实践】Pycharm编辑器的使用注意事项

    1. 写Python代码,根据PEP8风格,默认一行的长度不超过 80 个字符. 但是pycharm 默认是第 120 个字符处,故进行修改:  File→Settings→Editor→Code S ...

  7. 利用先电云iaas平台搭建apache官方大数据平台(ambari2.7+hdp3.0)

    一.ambari架构解析 二.基础环境配置 以两台节点为例来组件Hadoop分布式集群,这里采用的系统版本为Centos7 1511,如下表所示: 主机名 内存 硬盘 IP地址 角色 master 8 ...

  8. 在VMware上部署MOS(MirantisOpenStack-6.0)搭建全过程

    安装清单 MOS9.0系统镜像 1 MirantisOpenStack-6.0.iso ****首先创建3个仅主机模式网卡, 禁用DHCP,分别配置ip为 /10.20.0.0 /172.16.0.0 ...

  9. Vue触发隐藏input file的方法

    1.使用input透明覆盖法 将input的z-index设置为1以上的数字并覆盖到需点击的内容上,将input的样式opacity设置为0(即为透明度为0),这样通过绑定在input上的change ...

  10. Windows下直接双击可执行的jar

    如果没有设置,那么就是用命令行: jar处在文件夹路径下打开命令行:java -jar xxx.jar 总的来说是有点不方便 首先默认打开jar程序得是相同jdk的java.exe 然后是一闪而过 下 ...