手把手教你配置django----djcelery,以及使用

安装celery

pip install celery==3.1.26.post2  
pip install djcelery

在settings里配置

#settings.py
INSTALLED_APPS = [
    ...
    'djcelery',
]

配置基本连接信息

#settings.py
import djcelery
djcelery.setup_loader()
#broker
BROKER_URL= 'amqp://liuchuan:123456@123.57.45.143:5672'  
#backend 看情况而定,可以不需要
CELERY_IMPORTS = (                                  # 指定导入的任务模块
    'myapp.tasks',
    # 'mydjango.celery',
)
  • celery与3.7版本兼容问题

celery 官方的提议下,建议将 async 文件的文件名改成 asynchronous

C:\Python37\Lib\site-packages\kombu\async

  • 需要修改的文件

C:\Python37\Lib\site-packages\celery\utils\timer2.py

C:\Python37\lib\site-packages\celery\concurrency\asynpool.py

C:\Python37\lib\site-packages\celery\worker\components.py

C:\Python37\lib\site-packages\celery\worker\autoscale.py

C:\Python37\lib\site-packages\celery\worker\consumer.py

​ 创建tasks.py文件,编写任务代码

#tasks.py
from celery import task
from time import sleep
from houtaiguanli import settings
from django.core.mail import send_mail

@task
def add(email):
    print(email)
    subject = "实验楼 注册用户激活"
    message = "欢迎您加入实验楼学习计划"
    from_email = settings.EMAIL_HOST_USER
    recipient_list = [str(email)]
    send_mail(subject=subject, message=message, from_email=from_email, recipient_list=recipient_list)
    print('ok')
    

#测试使用    
@task
def as_l(x,y):
    sleep(10)
    return x + y

在视图里的接口调用异步任务

class lll(APIView):
    def get(self,request):
        res_email = request.GET.get('email')
        add.delay(str(res_email))
        return Response({'code':200})

开启celery

python manage.py celery worker

注意

如果还出现错误,则把file 用ctrl + 单机鼠标左键 进去把 async 该为 asynchronous

如果出现 time 和 value 交换位置 ,则打开文件 把里面的 time 和value 位置都叫换

一般配置到这里就已经可以正常使用了

下面的看情况而定

如果出错大概率需要这样,在mange.py文件加入

#manage.py
import django
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'eduapi.settings'
django.setup()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值