zoukankan      html  css  js  c++  java
  • 15 Django之Celery发送邮件

    异步任务--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  
    10  
    11 import djcelery
    12  
    13 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  
     8 app = Celery('portal')
     9  
    10 app.config_from_object('django.conf:settings')
    11 app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
    12  
    13  
    14 @app.task(bind=True)
    15 def debug_task(self):
    16     print('Request: {0!r}'.format(self.request))

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

    from newblog.celery import app as celery_app

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

     

    用装饰器装饰这个函数

    已启动redis 

    然后启动worker   

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

    linux要用  nohup执行这个worker工人

    在视图函数中调用

     

    最后注册发送邮件调用

    工人控制台显示

     

     

     

  • 相关阅读:
    张照行 的第九次作业
    张照行 的第八次作业
    Learning by doing
    张照行 的第七次作业
    张照行 的第六次作业
    Java第七次作业
    java第五次作业
    Java第七次作业
    Java第六次课后作业
    第五次Java作业
  • 原文地址:https://www.cnblogs.com/a2534786642/p/11162657.html
Copyright © 2011-2022 走看看