15 Django之Celery發送郵件

異步任務--celery發送郵件python

安裝兩個python包:linux

         pip install celery==3.1.25redis

         pip install django-celery==3.2.1數據庫

    pip install celery-with-redis==3.0django

在你的應用下面建立名爲task.py,用於封裝耗時任務app

 

 #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須要的表spa

將名爲celery.py文件加入到同工程目錄同名的目錄下,代碼以下:debug

 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工人

在視圖函數中調用

 

最後註冊發送郵件調用

工人控制檯顯示

 

相關文章
相關標籤/搜索