非同步傳送郵件 celery

2021-09-28 12:28:35 字數 1476 閱讀 3189

包結構:

依賴包:

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...