Django使用Celery异步发送短信(Django4.1.3+Celery5.2.7+ubuntu)

 首先要下载Celery,直接pip就好

我的redis配置

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.2.128:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            'PASSWORD':'u',
            "CONNECTION_POOL_KWARGS":{
                "decode_responses":True
            }
        }

    },
    'session': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://192.168.2.128:6379/1',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
            'PASSWORD':'u',
            "CONNECTION_POOL_KWARGS":{
                "decode_responses":True
            }
        }
    },
}

在Django中配置Celery

之后我们在项目的根目录(与manage.py齐平)创建一个新文件夹,命名随便,但尽量避开关键词

Django使用Celery异步发送短信(Django4.1.3+Celery5.2.7+ubuntu)_第1张图片

在celery_tasks目录下新建一个包,包里面新建一个tasks文件夹(这个名字不能改),里面存放我们用celery的函数,比如这里就是存我们发送短信的函数

Django使用Celery异步发送短信(Django4.1.3+Celery5.2.7+ubuntu)_第2张图片

在main和config中配置Celery

main.py

创建Celery实例并添加配置

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MyDjango.settings')

from celery import Celery

app=Celery('celery_tasks')


app.config_from_object('celery_tasks.config')

app.autodiscover_tasks(['celery_tasks.sms'])

config.py

格式为redis://:(你redis的密码)@ip+端口

比如你的redis密码是u

就输入下面这段

broker_url= 'redis://:[email protected]:6379'

tasks.py

这里存放我们使用celery的函数

必须用@app.task修饰

比如我的发送短信函数是Sample.main


from login.alibabacloud import Sample
from celery_tasks.main import app

@app.task
def celery_send_sms_code(mobile,sms_code):
    return Sample.main(str(mobile),sms_code)

 终端输入 celery -A celery_tasks.main  worker -l  INFO测试一下(如果文件目录和我一样的话)


Django使用Celery异步发送短信(Django4.1.3+Celery5.2.7+ubuntu)_第3张图片

 表示连接成功

 

你可能感兴趣的:(Django,django,python,后端)