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齐平)创建一个新文件夹,命名随便,但尽量避开关键词

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

在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://:u@192.168.2.128: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测试一下(如果文件目录和我一样的话)


 表示连接成功

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值