包結構:
依賴包:
redis3.4.1
celery4.4.1
eventlet==0.25.1
首先建立乙個celery_tasks的python包,在celery_tasks的__init__.py中配置
drugstore是你專案的主目錄名稱,即有settings.py檔案的包名(這個需要改為你自己的)
from celery import celery
import os
import django
os.environ.setdefault("django_settings_module", "drugstore.settings")
django.setup()
# 例項化乙個celery
然後建立task.py(首先你郵箱傳送是可以正常傳送的,settings中配置好)
from drugstore.settings import email_host_user
from django_redis import get_redis_connection
from django.core.mail import send_mail
import random
def send_email(email):
title = '驗證碼'
num = random.randint(1000,9999)
redis_cli = get_redis_connection('vcode')
redis_cli.set(f'email-', num, ex=120)
content = f'驗證碼為: ,有效時間為120s,歡迎使用'
send_mail(title, content , email_host_user,[email], fail_silently=false)
啟動任務(eventlet是因為在windows下,celery啟動需要依賴eventlet,mac的話就不需要)
celery -a celery_tasks.tasks worker -l info -p eventlet
這樣就成功了
注意:如果你報
這樣的話就是你celery跟你redis版本不相容,更改好版本相容就完成了
非同步任務 celery傳送郵件
安裝兩個python包 pip install celery 3.1.25 pip install django celery 3.1.17 在配置檔案settings.py中做如下配置 a 首先註冊應用djcelery並做如下配置。import djcelerydjcelery.setup loa...
celery非同步傳送簡訊
celery專案中的所有導包位址,都是以celery base dir為基準設定 執行celery命令時,也需要進入celery base dir目錄執行 celery base dir os.path.dirname os.path.abspath file def send sms code s...
非同步傳送郵件
using system using system.collections.generic using system.web using system.net.mail using system.text 傳送郵件類 public class smtpmail void client sendcom...