Django==2.0.2 Celery==4.4.2 Redis==3.0.504

配置环境

windows10 Django2.0.2 Celery4.4.2 Redis==3.0.504 eventlet(windows环境下安装,linux环境下不需要,版本随意)

settings 同级目录下创建 celery.py

# -*- coding:utf-8 -*-

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings

# 指定Django默认配置文件模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'xrtProject.settings')

# 为我们的项目myproject创建一个Celery实例。这里不指定broker backend 容易出现错误。
# 如果有密码 使用 'redis://:password@127.0.0.1:6379/0'

app = Celery('xrt', broker='redis://localhost:6379/10',
             backend='redis://localhost:6379/9')
# 这里指定从django的settings.py里读取celery配置

# app.config_from_object('django.conf:settings')

from kombu import serialization
serialization.registry._decoders.pop("application/x-python-serialize")

# celery 的配置项目,有其他的要求,可以按需求添加
app.conf.update(
    CELERY_ACCEPT_CONTENT = ['json'],
    CELERY_TASK_SERIALIZER = 'json',
    CELERY_RESULT_SERIALIZER = 'json',
)

# 自动从所有已注册的django app中加载任务
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

应用app 中创建 tasks.py

# -*- coding:utf-8 -*-
from __future__ import absolute_import
import json
from celery import shared_task
from django_redis import get_redis_connection

from src.remote.models import OperationLog
from tools.add_message import SendMessage

conn = get_redis_connection('default')


# # name表示设置任务的名称,如果不填写,则默认使用函数名做为任务名
# 定义的两个异步函数


@shared_task(name="save_message", ignore_result=True)
def save_message(phone, recipient, remark, content, sup_links, links, name, remind):
    """存储全局消息信息"""
    print("异步任务开始---------------》")
    send_ = SendMessage()
    send_.send_duan_xin(phone, content)
    send_.send_web(content, recipient, sup_links, links, remark, name, remind)
    openid = ''
    send_.send_we_chat(openid, content)
    print("异步任务完成---------------》")
    return "save_message"


@shared_task(name='save_log', ignore_result=True)
def save_log(create_id, create_user, mod_f, mod_s, order, detail, feed_b, created_time):
    print(create_id, create_user, mod_f, mod_s, order, detail, feed_b, created_time)
    dic = {
        "create_id": create_id,
        "create_user": create_user,
        "mod_f": mod_f,
        "mod_s": mod_s,
        "order": order,
        "detail": detail,
        "feed_b": feed_b,
        "created_time": created_time,
    }
    OperationLog.objects.create(**dic)
    print("异步任务完成---------------》")
    return "save_message"


在views.py中进行调用

class Log(MyBaseView):
    """日志管理"""
    model = OperationLog

    def post(self, request):
         phone = "138****0342"
         recipient = "1111111111111111111111"
         remark = ''
         content = "您收到一条*********"
         sup_links = "立即查看"
         links = 'https://www.baidu.com/{}'.format("111111111")
         name = '申请'
         remind = ['短信', '小铃铛', '公众号']
        
         tasks.save_message.apply_async(
             (phone, recipient, remark, content, sup_links, links, name, remind))  # 异步调用发送消息
	     return JsonResponse({'code': 200, 'total': total, 'data': rows,  'currentPage': page_number},
	                  json_dumps_params={'default': mydefault})

启动

启动Django项目
python manage.py runserver
启动Celery
异步任务启动
	windows 10 环境下:(pip install eventlet)
 		>celery -A devices_back worker -l info -P eventlet
 	linux 下:
 		>celery - A devices_back  worker - l info
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值