非同步任務 celery傳送郵件

2022-05-31 03:15:10 字數 1844 閱讀 2800

安裝兩個python包:

pip install celery==3.1.25

pip install django-celery==3.1.17

在配置檔案settings.py中做如下配置:

a)    首先註冊應用djcelery並做如下配置。

import djcelery
djcelery.setup_loader()
broker_url = 'redis:'
b)    生成djcelery所依賴的表。

python manage.py migrate

c)    在應用目錄下新建乙個tasks.py檔案。

#

寫celery任務函式

from celery import

task

from django.core.mail import

send_mail

from django.conf import

settings

import

time

@task

defsend_register_success_mail(username, password, email):

message = '

請記好您的資訊:

使用者名稱:

' + username + '

密碼:' +password

send_mail(

'歡迎資訊

', '', settings.email_from, [email], html_message=message)

time.sleep(5)

d)    任務函式中將傳送郵件任務加入任務佇列

#

/user/register_handle/

defregister_handle(request):

'''實現使用者註冊

'''#

1.接收使用者的註冊資訊

username = request.post.get('

user_name')

password = request.post.get('

pwd'

) email = request.post.get('

email')

#2.儲存進資料庫

passport.objects.add_one_passport(username=username, password=password, email=email)

#3.給使用者註冊郵箱發郵件

#message = '請記好您的資訊:

使用者名稱:'+username+'

密碼:'+password

#send_mail('歡迎資訊', '', settings.email_from, [email], html_message=message)

#time.sleep(5)

#將任務放入任務佇列

send_register_success_mail.delay(username=username, password=password, email=email)

#3.跳轉到登入頁面 /user/login/

return redirect('

/user/login/

')

啟動worker進行

python manage.py celery worker --loglevel=info

非同步傳送郵件 celery

包結構 依賴包 redis3.4.1 celery4.4.1 eventlet 0.25.1 首先建立乙個celery tasks的python包,在celery tasks的 init py中配置 drugstore是你專案的主目錄名稱,即有settings.py檔案的包名 這個需要改為你自己的 ...

celery非同步傳送簡訊

celery專案中的所有導包位址,都是以celery base dir為基準設定 執行celery命令時,也需要進入celery base dir目錄執行 celery base dir os.path.dirname os.path.abspath file def send sms code s...

celery非同步任務傳送簡訊驗證碼

進行處理,處理之後把結果儲存到backend中。在mian.py中主要是celery的主程式 from celery import celery import os if not os.getenv django settings module os.environ django settings ...